0132. 分割回文串 II
最后更新于
这有帮助吗?
这有帮助吗?
for i in range(n):
for j in range(i + 1, n):
if judge(i + 1, j):
# 你的逻辑palindrome_pairs[i][j] = (s[i] == s[j]) and palindrome_pairs[i + 1][j - 1]for i in range(n):
for j in range(i + 1, n):
if judge(i + 1, j):
dp[j] = min(dp[j], dp[i] + 1)
class Solution:
def minCut(self, s: str) -> int:
n = len(s)
palindrome_pairs = [[True] * n for _ in range(n)]
for i in range(n - 1, -1, -1):
for j in range(i + 1, n):
palindrome_pairs[i][j] = (s[i] == s[j]) and palindrome_pairs[i + 1][j - 1]
def judge(i, j):
return palindrome_pairs[i][j]
dp = [float("inf")] * n
dp[0] = 0
for i in range(n):
for j in range(i + 1, n):
if palindrome_pairs[0][j]:
dp[j] = 0
elif judge(i + 1, j):
dp[j] = min(dp[j], dp[i] + 1)
return dp[-1]