我使用的是中心位置法,遍历去头去尾的字符串,若字符串左边右边相等,则两个指针定位左边右边,同时向外扩展直到不相等,则回文长度是right_point - left_point - 1;若字符串左边或者右边的某一位与该字符串相等,则指针定位这两个相等的字符,并同时向外扩展直到不相等,方法相同;算法时间复杂度N方,空间复杂度N,一个存放所有以该数为中心的回文长度

完整代码:

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param A string字符串 
# @param n int整型 
# @return int整型
#
class Solution:
    def getLongestPalindrome(self , A: str, n: int) -> int:
        # write code here           
        dp = [1]*n
        if n ==1:
            return 1
        for i in range(1,n-1):
            if A[i-1] == A[i+1]:
                left_point ,right_point = i-1 , i+1
            elif A[i] == A[i-1]:
                left_point ,right_point = i-1 , i
            elif A[i+1] == A[i]:
                left_point ,right_point = i , i+1
            else:
                continue
            while left_point>=0 and right_point<n and A[left_point]==A[right_point]:
                left_point -= 1
                right_point += 1
            dp[i] = right_point - left_point - 1
        return max(dp)