class Solution:
def partition(self, s: str) -> List[List[str]]:
if len(s)==0:
return [[]]
if len(s)==1:
return [[s]]
isPalindrome = lambda s : s == s[::-1]
def backtrack(s,res,path):
#如果找到最后了,返回此次回溯的结果
if not s:
res.append(path)
return
for i in range(1,len(s)+1):
#判断当前子串是不是回文串,如果是回文串,那就直接往后找
if isPalindrome(s[:i]):
#左边部分是回文串,并入res中,把右边部分当做字符串,进入下一次回溯
backtrack(s[i:],res,path+[s[:i]])
res = []
backtrack(s,res,[])
return res
- Use the basic template of the backtracking algorithm to solve the problem