131. 分割回文串-回溯算法 (leetcode)
给定一个字符串 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在本步骤还是没有改变,也不需要抹去上一步操作。
相关推荐
hugebawu 2020-10-12
风吹夏天 2020-07-18
莫明天涯 2020-07-05
pengkingli 2020-06-25
ustbfym 2020-06-17
wonner 2020-06-04
SystemArchitect 2020-06-02
dbhllnr 2020-05-15
wonner 2020-04-25
seekerhit 2020-04-20
yedaoxiaodi 2020-04-19
faiculty 2020-03-03
dushine00 2020-02-18
nurvnurv 2020-02-02
troysps 2020-01-08
rein0 2020-01-01
yishujixiaoxiao 2019-12-30
baike 2019-12-03