今天回顾-回溯算法-131. 分割回文串

注意点&感悟:

  • 对这个范围还是没太梳理清楚,
  • 我的感觉是当前位置是start_index, 每轮的结束是i
  • 所以范围是[start_index,i+1]

题目链接:131. 分割回文串

又看了一遍题解:

  • 每一层开始都是start_index,遍历的子项是i
  • start_index在每一层里都是固定值,也是切割线,而i是后面的结束的切割线。

自己独立写的代码:

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        res = []
        self.backtracking(s,0,[],res)
        return res
        
    def backtracking(self,s,start_index,path,res):
        # 1.终止条件
        if start_index == len(s):   # 既可以是len(path)又可以是start_index
            res.append(path[:])
            return 
        # 2.核心代码
        for i in range(start_index,len(s)):
            # 3.多了一层判断是不是回文
            if s[start_index:i+1] == s[start_index:i+1][::-1]:  # 这里的范围容易出错
                path.append(s[start_index:i+1])
                self.backtracking(s,i+1,path,res)
                path.pop()
            else:
                continue

通过截图:

posted @ 2024-02-06 16:09  o蹲蹲o  阅读(4)  评论(0编辑  收藏  举报