131. 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]
解题思路:回溯法。回溯法的思路是使用path变量记录中间状态,当s满足递归终止条件即s为空时,将path添加到result中。否则,对s中以首字符开头的任意子串进行回文判断,若满足回文,则递归。
Python3代码如下:
class Solution(object):
def partition(self, s):
"""
:type s: str
:rtype: List[List[str]]
"""
self.f = lambda x:x == x[::-1]
result = []
self.dfs(s,result,[])
return result
def dfs(self,s,result,path):
if not s:
result.append(path)
else:
for i in range(1,len(s)+1):
if self.f(s[:i]):
self.dfs(s[i:],result,path+[s[:i]])