给定一个字符串s,分割s使得s的每一个子串都是回文串
返回所有的回文分割结果
例如:给定字符串s="aab",
返回
[? ["aa","b"],? ["a","a","b"]? ]
class Solution {
public:
vector<string> store;
vector<vector<string>> partition(string s) {
vector<vector<string>> res;
int n=s.size();
vector< vector<string> > bin(n);///表示以 字符串i开始的回文串
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
int k=0;
while(i+k<j-k && s[i+k]==s[j-k] )
k++;
if(s[i+k]==s[j-k])
{ ///substr(i,len)求取以i开头 长度为len的字符串
bin[i].push_back(s.substr(i,j-i+1));
}
}
}
dfs(0,n,bin,res);
return res;
}
void dfs(int start,int n,vector<vector<string> >&bin,vector<vector<string> >&res ){
if(start>=n){
res.push_back(store);
return;
}
vector<string> temp=bin[start];
for(int i=0;i<temp.size();i++){
store.push_back(temp[i]);
dfs(start+temp[i].size(),n,bin,res);
store.pop_back();
}
}
};
原文:https://www.cnblogs.com/zhaochunhua12345/p/11537734.html