Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab"
,
Return
[ ["aa","b"], ["a","a","b"] ]
class Solution {
public:
vector<vector<string>> partition(string s) {
vector <vector <string>>result;
vector <string> path;
dfs(result,s,path,0);
return result;
}
private:
void dfs(vector <vector <string>>&result,string &s , vector<string> path,int cur){
if(cur==s.size()){
result.push_back(path);
return;
}
for(int i=cur; i<s.size();i++){
if(judge(s,cur,i)){
string temp(&s[cur],&s[i+1]);
path.push_back(temp);
dfs(result,s,path,i+1);
path.pop_back(); //DFS算法一般不要忘了复位
}
}
}
bool judge(string &s, int cur,int i){
if(cur==i)
return true;
while(cur<i){
if(s[i]!=s[cur])
return false;
i--;
cur++;
}
return true;
}
};