package main
import (
"fmt"
)
//求字符串的最长回文子串有多长
func main() {
a := "abaa"
b := getSon(a)
fmt.Println(b)
}
func getSon(s string) int {
length := len(s)
dp := make([][]int, length)
for k := range dp {
dp[k] = make([]int, length)
}
ans := 1
for i := 0; i < length-1; i++ {
dp[i][i] = 1
if s[i] == s[i+1] {
dp[i][i+1] = 1
ans = 2
}
}
for j := 3; j <= length; j++ {
for k := 0; k+j <= length; k++ {
l := k + j - 1
if s[k] == s[l] && dp[k+1][l-1] == 1 {
dp[k][l] = 1
if l-k >= ans {
ans = l - k + 1
}
}
}
}
return ans
}
输出结果:3