package main
func getLongestPalindrome( A string ) int {
// dp[i][j] 代表以 i 起始和 j 结尾的子串中是否是回文子串
// dp[i][j] = (A[i] == A[j]) 时 dp[i+1][j-1] 左下方
n, ans := len(A), 1
dp := make([][]bool, n)
for i := range dp {
dp[i] = make([]bool, n)
dp[i][i] = true
}
for j := 1; j < n; j++ {
for i := 0; i < j; i++ {
if A[i] == A[j] && (j-i+1 <= 3 || dp[i+1][j-1]) {
dp[i][j] = true
ans = max(ans, j-i+1)
}
}
}
return ans
}
func max(a, b int) int { if a < b { return b }; return a }

京公网安备 11010502036488号