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

image

这道题目最气的一点是,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;
    }
};
posted @ 2024-12-05 09:47  NeroMegumi  阅读(19)  评论(0)    收藏  举报