LeetCode-131、分割回文串-中等
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
代码:
class Solution:
def partition(self, s: str) -> List[List[str]]:
stack = [[s[0]]]
for i in range(1, len(s)):
L = len(stack)
for j in range(L):
cur = stack[j]
if s[i] == cur[-1]:
stack.append(cur[:-1] + [cur[-1] + s[i]])
if len(cur) > 1 and s[i] == cur[-2]:
stack.append(cur[:-2] + [cur[-2] + cur[-1] + s[i]])
cur.append(s[i])
return stack
class Solution:
def partition(self, s: str) -> List[List[str]]:
def func(cur, s):
if not s:
res.append(cur)
return
for i in range(len(s)):
if s[:i+1] == s[i::-1]:
func(cur+[s[:i+1]], s[i+1:])
res = []
func([], s)
return res