1.问题
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
示例 1:
输入:s = "aab" 输出:[["a","a","b"],["aa","b"]]
2.思路
分割字符串和数字组合问题本质是相同的,这题只需额外判断下是否为回文串即可。
3.代码实现
vector<vector<string>> result;
vector<string> path;
void back(const string& s,int startIndex){
if(startIndex>=s.size()){
result.push_back(path);
return;
}
for(int i=startIndex;i<s.size();i++){
if(isPalindrome(s,startIndex,i)){
string str = s.substr(startIndex,i-startIndex+1);
path.push_back(str);
}
else{
continue;
}
back(s,i+1);
path.pop_back();
}
}
bool isPalindrome(const string& s,int start,int end){
for(int i=start,j = end;i<j;i++,j--){
if(s[i]!=s[j]) return false;
}
return true;
}

被折叠的 条评论
为什么被折叠?



