今天回顾-回溯算法-131. 分割回文串
注意点&感悟:
- 对这个范围还是没太梳理清楚,
- 我的感觉是当前位置是start_index, 每轮的结束是i
- 所以范围是[start_index,i+1]
又看了一遍题解:
- 每一层开始都是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
通过截图: