Posted on 2023-01-22 23:25
Uriel 阅读(30)
评论(0) 编辑 收藏 引用 所属分类:
搜索 、
闲来无事重切Leet Code
给出一个字符串,将其切分成若干子串,要求每个子串都是回文串,输出所有切分方法
DFS暴搜,每次从当前位置尝试加入1~剩余字符长度的子串,如果子串是回文串,则DFS到下一层,更新游标位置
1 #131
2 #Runtime: 553 ms (Beats 91.33%)
3 #Memory: 32.6 MB (Beats 44.45%)
4
5 class Solution(object):
6 def partition(self, s):
7 """
8 :type s: str
9 :rtype: List[List[str]]
10 """
11 self.ans = []
12 def DFS(i, ts):
13 if i == len(s):
14 self.ans.append(ts)
15 return
16 for j in range(i, len(s)):
17 ss = s[i:j+1]
18 if s[i:j+1] == ss[::-1]:
19 DFS(j + 1, ts + [s[i:j+1]])
20 return
21
22 DFS(0, [])
23 return self.ans