思路
dfs枚举
时间复杂度O(N^2)
待优化,预处理出所有的回文串O(N^2),哈希存,key是回文串,value是1,判断时只需要O(1),或者用二维数组存,i,j下标,1为回文串。
class Solution:
"""
@param: s: A string
@return: A list of lists of string
"""
def partition(self, s):
# write your code here
ans = []
def is_palindrom(s):
return s == s[::-1]
def dfs(s, res):
if not s:
ans.append(res[:])
for i in range(1, len(s)+1):
if is_palindrom(s[:i]):
res.append(s[:i])
# print("s[i:]:{}".format(s[i:]))
dfs(s[i:], res)
res.pop()
dfs(s, [])
return ans