题目
分割回文串
算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台
解析
class Solution {
vector<vector<string>> res;
vector<string> path;
public:
void backtracking(const string s,int startindex){
//判出
if(startindex>=s.size()){
//如果startindex大于字符串的大小,证明遍历结束了,且之前的符合要求
res.push_back(path);
return ;
}
for(int i=startindex;i<s.size();++i){
//判断是否是回文串
if(isPartition(s,startindex,i)){
string str = s.substr(startindex,i-startindex+1);
path.push_back(str);
}else{
//剪枝
continue;
}
backtracking(s,i+1);
path.pop_back();//回溯
}
}
bool isPartition(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;
}
vector<vector<string>> partition(string s) {
backtracking(s,0);
return res;
}
};