代码随想录——回溯9.分割回文串

这道题目最气的一点是,OJ评测输出为空,我想本地调试看看怎么回事,直接让豆包帮忙处理成可以直接运行的样子,没想到豆包帮我debug好了回文串判断方式,导致本地调试没问题。后面才意识到OJ上的回文串处理部分和本地的不一样。
思路
代码
class Solution {
public:
vector<string> path;
vector<vector<string>> result;
void backTracking(string s) {
if (s == "") {
result.emplace_back(path);
return;
}
for (int i = 0; i < s.length(); i++) {
string substr = s.substr(0, i + 1); // 从开头裁取i+1个字符
if (!isHuiwen(substr)) continue; // 不是回文,剪枝
path.emplace_back(substr);
backTracking(s.substr(i + 1)); // 从s[i+1]裁取
path.pop_back();
}
}
bool isHuiwen(string s) {
int left = 0, right = s.length() - 1; // 此处修正,right初始值应为长度减1
while (left <= right) {
if (s[left]!= s[right]) return false;
left++;
right--;
}
return true;
}
vector<vector<string>> partition(string s) {
backTracking(s);
return result;
}
};
浙公网安备 33010602011771号