码迷,mamicode.com
首页 > 编程语言 > 详细

131. 分割回文串-回溯算法 (leetcode)

时间:2020-03-08 19:19:36      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:lis   字符串   方案   art   步骤   src   思考   代码   就是   

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回 s 所有可能的分割方案。

技术图片

 

代码:

class Solution:
    def __init__(self):
        self.res = []

    def partition(self, s: str) -> List[List[str]]:
        
        self.helper(s,[])
        return self.res

    def helper(self,part_of_s,answerList):
        if not part_of_s:
            self.res.append(answerList)
        for i in range(1,len(part_of_s)+1):
            if part_of_s[:i] == part_of_s[:i][::-1]:
                self.helper(part_of_s[i:],answerList + [part_of_s[:i]])

 思考:

  1. 回溯算法重要的就是回溯,回溯就是把上一步的操作抹去

    a) 在79题单词搜索里体现为:  visited[ i ][ j ] = True;  visted[ i ][ j ] = False

    b)在本题里体现为递归时的变量传递: 不改变当前的anserList 直接传递到下一步 answerList + [part_of_s[:i]],这样循环运行完了以后,answer在本步骤还是没有改变,也不需要抹去上一步操作。

131. 分割回文串-回溯算法 (leetcode)

标签:lis   字符串   方案   art   步骤   src   思考   代码   就是   

原文地址:https://www.cnblogs.com/ChevisZhang/p/12444244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!