Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
Example:
Input: "aab"
Output:
[
["aa","b"],
["a","a","b"]
]
记录所有一个字符串经过拆分后,全部被拆分字符串全部回文的结果。
这道题还是用dfs算法求解。
isPart判断是否回文,self.res存储所有结果。
if not s表示遍历完字符串而且path中的字符串都是回文的。(因为不是回文的就不会进入到dfs递归当中)
还有记得return
注意path是list,在加字符串的时候需要转为list。
class Solution:
def partition(self, s: str) -> List[List[str]]:
self.res=[]
self.dfs([],s)
return self.res
def dfs(self,path,s):
if not s:
self.res.append(path)
return
for i in range(1,len(s)+1):
if self.isPart(s[:i]):
self.dfs(path+[s[:i]],s[i:])
def isPart(self,s):
if s==s[::-1]:
return True