小黑享受思考心流: 132. 分割回文串 II
动态规划
class Solution:def minCut(self, s: str) -> int:# 动态规划:穷举所有回文子串n = len(s)dp_1 = [[True]*n for _ in range(n)]for i in range(n-2, -1, -1):for j in range(i+1, n):dp_1[i][j] = dp_1[i+1][j-1] and (s[i]==s[j])# 动态规划:最小分割次数dp_2 = [0]for i in range(1, n):min_div = nfor t in range(i+1):if dp_1[t][i]:if not t:min_div = 0else:min_div = min(min_div, dp_2[t-1]+1)dp_2.append(min_div)return dp_2[n-1]