#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param A string字符串 
# @return int整型
#
class Solution:
    def getLongestPalindrome(self , A: str) -> int:
        # write code here
        n = len(A)
        if n<2:
            return n
        dp = [[False]*n for _ in range(n)]
        start, max_len = 0, 1
        for i in range(n):#长度为1的子串全部为回文串
            dp[i][i] = True
        for length in range(2,n+1):#遍历做有可能的长度
            for i in range(n-length+1):#当前长度下的可能开始坐标
                j = i+length-1#当前长度、开始坐标下的结束坐标
                if A[i]==A[j]:#如果当前坐标下两侧字符相同
                    if length==2 or dp[i+1][j-1]:#内侧字符相同,或长度为2
                        dp[i][j] = True
                        if length>max_len:
                            start, max_len = i, length
        return max_len#不仅可以求出长度,还可以求出最长回文串本身