import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param A string字符串 
     * @return int整型
     */
     //dp[i][j] 表示以i-j的回文字符串
    public int getLongestPalindrome (String A) {
        // write code here
        int n = A.length();
        boolean[][] dp = new boolean[n][n];

        //1.初始化 虚拟节点为""

        //2.填表 1.i,j位置字符相同时,判断是该位置字符串长度如果i+1=j或者i=j,即为回文子串,如果i+1<j;说明长度大于2,此时就要判断dp[i+1][j-1]位置是否为回文子串
        int  max = 0;
        //此时我们填表顺序为从下到上,我们要根据dp[i+1][j-1]来判断
        for(int i=n-1;i>=0;i--){
            for(int j=i;j<n;j++){ 
                if(A.charAt(i)==A.charAt(j)){
                    dp[i][j] = i+1<j ?dp[i+1][j-1] : true;

                    if(dp[i][j]) max = Math.max(max,j-i+1);
                }
            }
           
        }

        return max;
    }

    

    
}