题目大意是输出所有回文字符串的分割结果,其实就是个组合问题,对于这个问题的解题思路和之前的电话号码的很像,每次我们找到一个回文字符串,都在最终结果中加上当前回文字符串与剩下字符串能够产生的组合的交叉组合。
代码如下:
class Solution:
def IsP(self, s: str):
r_s = s[::-1]
if r_s == s:
return True
else:
return False
def fuc(self, s: str):
if len(s) == 0:
return [[]]
if len(s) == 1:
return [[s]]
length = len(s)
temp = []
for i in range(1,length+1):
if self.IsP(s[0:i]):
rest = self.fuc(s[i:])
for elm in rest:
elm.insert(0, s[0:i])
new_ = elm
temp.append(new_)
return temp
def partition(self, s: str) -> List[List[str]]:
if len(s) == 0:
return []
if len(s) == 1:
return [[s]]
all = self.fuc(s)
return all