131. 分割回文串
每日几道leetcode刷刷题!
传送门
题目描述
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
回文串 是正着读和反着读都一样的字符串。
示例 1:
示例 1:
输入:s = “aab”
输出:[[“a”,“a”,“b”],[“aa”,“b”]]
代码
class Solution:
def partition(self, s: str) -> List[List[str]]:
path = []
result = []
def ish(s, left, right):
while left <= right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
def backtrack(s, start):
if start > len(s)-1:
result.append(path[:])
return
for i in range(start, len(s)):
if ish(s, start, i):
str = s[start:i + 1] #获取[start,i]在s中的子串
path.append(str)
else:
continue
backtrack(s, i+1)
path.pop()
backtrack(s, 0)
return result