https://leetcode-cn.com/problems/palindrome-partitioning-ii/comments/
回溯(超时):
class Solution:
def minCut(self, s):
"""
:type s: str
:rtype: int
"""
self.minCount = sys.maxsize #记录回文串最少数目
self.dfs(s, 0, 0)
return self.minCount - 1 #最少数目-1即为最少分割次数
#回溯,从idx后开始处理,count计数当前找到的回文串数
def dfs(self, s, idx, count):
if idx == len(s):
self.minCount = min(self.minCount, count)
#截取长度从1开始,分别试探
for i in range(idx+1, len(s)+1):
if self.isPalindrome(s[idx:i]):
self.dfs(s, i, count+1)
def isPalindrome(self, s):
return s == s[::-1]