给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: “aab”
输出:
[
[“aa”,“b”],
[“a”,“a”,“b”]
]
思路
用i遍历数组各个位置,如果s[:i]为回文串,则对后半部分进行递归,将返回的结果中每一项加上s[:i]并将该项添加至最终结果
代码
def partition(self, s):
if(s==''):return []
e=[]
if(s==s[::-1]):e.append([s])
for i in range(len(s)):
if(s[:i+1]==s[i::-1] ):
p=self.partition(s[i+1:])
for c in p:
if(c!=[]):e.append([s[:i+1]]+c)
return e