leetcode 131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]
示例 2:

输入:s = "a"
输出:[["a"]]
 

提示:

1 <= s.length <= 16
s 仅由小写英文字母组成

class Solution {
public:
    vectortemp;
    vector>res;
    bool isp(string s,int start,int end)
    {
        for(int i=start,j=end;i<=j;i++,j--)
        {
            if(s[i]!=s[j])
            return 0;
        }
        return 1;
    }
    void seize(int start,string s,int s_length)
    {
        if(start>=s_length)
        {
            res.push_back(temp);
            return;
        }
        for(int i=start;i> partition(string s) {
        int s_length=s.length();
        seize(0,s,s_length);
        return res;
    }
};

思路来自:代码随想录 (programmercarl.com)

回溯法模板:

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

我一开始是想每次添加一个字母,根据其独立成一个stirng还是加入前一个string分叉。实际上这完全不“回溯”,因为21行开始的循环部分完全没用出现。

学习一下这次的思想,以及第7行的双变量循环。

你可能感兴趣的:(leetcode错题本,leetcode,回溯,leetcode,算法,c++)