题目描述:
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> part;
dfs(result,part,s,0);
return result;
}
void dfs(vector<vector<string>> &result,vector<string> &part,string &s,int start){
if(start==s.length()){
result.push_back(part);
return;
}
for(int i=start;i<s.length();i++){
if(isPalindrome(s,start,i)){
part.push_back(s.substr(start,i-start+1));
dfs(result,part,s,i+1);
part.pop_back();
}
}
}
bool isPalindrome(string &s,int start,int end){
while(start<end){
if(s[start]!=s[end])return false;
start++;
end--;
}
return true;
}
};