[132][困难][DFS][回溯][动态规划] 分割回文串 II
题目描述
解题思路
回溯
class Solution:
def minCut(self, s: str) -> int:
self.s = s
self.n = len(s)
if self.n == 0:
return []
self.level = float('inf')
self.result = []
self.dfs(0, [], 0)
return self.level - 1
def dfs(self, i, path, level):
if i == self.n:
if level < self.level:
self.level = level
self.result = path[:]
if level >= self.level:
return
for j in range(self.n - 1, i - 1, -1):
if self.s[i:j+1] == self.s[i:j+1][::-1]:
path.append(self.s[i:j + 1])
self.dfs(j + 1, path, level + 1)
path.pop()动态规划
参考资料
最后更新于