Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
Example:
Input: "aab" Output: [ ["aa","b"], ["a","a","b"] ]
方法1:深度优先搜索
class Solution {
public:
vector<vector<string>> partition(string s) {
vector<vector<string>> res;
vector<string> tp;
dfs(s,0,tp,res);
return res;
}
void dfs(string s, int start, vector<string> &tp, vector<vector<string>> &res){
if(start==s.size()){
res.push_back(tp);
return;
}
for(int i=start;i<s.size();i++){
string subS=s.substr(start,i-start+1);
string subSR(subS.rbegin(),subS.rend());//初始化,将subS倒置过来,利用了rbegin(),rend()迭代器
if(subS==subSR){
tp.push_back(subS);
dfs(s,i+1,tp,res);//从当前的下一个元素开始dfs
tp.pop_back();//!!!pop_back
}
}
}
};