package main import "fmt" func solution(str string) int { dp := make([][]int, len(str)) for i := range dp { dp[i] = make([]int, len(str)) } for row := len(str) - 1; row >= 0; row-- { dp[row][row] = 1 for col := row + 1; col < len(str); col++ { //str[row] = str[col] if str[row] == str[col] { dp[row][col] = dp[row+1][col-1] + 2 } else { dp[row][col] = max(dp[row+1][col], dp[row][col-1]) } } } return dp[0][len(str)-1] } func max(a, b int) int { if a > b { return a } return b } func main() { //str := "abccsb" //结果4 var str string fmt.Scanln(&str) fmt.Println(solution(str)) }