class Solution(object):
def partition(self, s):
"""
:type s: str
:rtype: List[List[str]]
"""
result = []
self.backtracking(s, result, 0, [])
return result
def backtracking(self, s, result, index, subset):
# 先是终止条件
# 化树形结构,发现结果都在叶子节点,所以终止条件如下
if index >= len(s):
result.append(subset[:])
return
for i in range(index, len(s)):
# 多了一步,判断是否为回文串
# 是回文串,才会存起来
if self.judge(s, index, i):
subset.append(s[index:i+1])
self.backtracking(s, result, i+1, subset)
subset.pop()
else:
continue
# 判断是否为回文串
def judge(self, s, l, r):
while l < r:
if s[l] != s[r]:
return False
l += 1
r -= 1
return True
回溯法专题--LC131分割回文串
最新推荐文章于 2024-07-26 01:21:03 发布