题目
分割回文串
算法面试题汇总 - 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;
}
};

本文解析了如何通过递归和剪枝策略解决LeetCode中的回文串分割问题。通过backtracking函数实现路径搜索,并利用isPartition检查子串是否为回文。核心算法展示了如何在字符串中寻找符合条件的子串组合,以形成回文。
802

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



