131. 分割回文串

题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思想:

本题这涉及到两个关键问题:

  1. 切割问题,有不同的切割方式
  2. 判断回文

相信这里不同的切割方式可以搞懵很多同学了。

这种题目,想用for循环暴力解法,可能都不那么容易写出来,所以要换一种暴力的方式,就是回溯。

一些同学可能想不清楚 回溯究竟是如何切割字符串呢?

我们来分析一下切割,其实切割问题类似组合问题

例如对于字符串abcdef:

  • 组合问题:选取一个a之后,在bcdef中再去选取第二个,选取b之后在cdef中再选取第三个.....。
  • 切割问题:切割一个a之后,在bcdef中再去切割第二段,切割b之后在cdef中再切割第三段.....。

131. 分割回文串_第1张图片

class Solution {
public:
    std::vector> result;
    std::vector path;
    vector> partition(string s) {
        backtracking(s, 0);
        return result;
    }

    bool isPalindrome(const string& s, int start, int end)
    {
        for(int i = start, j = end; i= s.size())
        {
            result.push_back(path);
            return;
        }
        for(int i = startIndex; i

你可能感兴趣的:(leetcode,kali,leetcode,数据结构)