给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
class Solution:
def partition(self, s: str) -> List[List[str]]:
res = []
self.back(s, [], res)
return res
def back(self, s, cur, res):
if not s:
res.append(cur[:])
for i in range(1, len(s)+1):
add = s[:i]
if self.ish(add):
cur.append(add)
self.back(s[i:], cur, res)
cur.pop()
def ish(self, s):
left, right = 0, len(s)-1
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True