import java.util.*;

public class Solution {
    public int getLongestPalindrome(String A, int n) {
        // write code here
        if(n == 0 || n == 1){
            return n;
        }
        int maxLength = 0;
        for(int i = 0; i < n; i++){
            //每取出一个元素后 都从末尾去寻找相等的值 来判断二者之间是否可以组成回文子串
            char next = A.charAt(i);
            int[] ends = findNextFromEnd(A,i,next);
            for(int j = 0;j<ends.length;j++){
                //依次判断每一个位置二者之间是否可以组成回文子串
                boolean b = can(A,i,ends[j]);
                if(b){
                    maxLength = Math.max(maxLength,ends[j] - i + 1);
                }
            }
        }
        return maxLength;
    }

    private int[] findNextFromEnd(String A,int i,char next){
        ArrayList<Integer> result = new ArrayList<>();
        for(int j = A.length() - 1; j > i; j--){
            char next2 = A.charAt(j);
            if(next2 == next){
                result.add(j);
            }
        }
        int[] res = new int[result.size()];
        for(int k = 0;k< result.size();k++){
            res[k] = result.get(k);
        }
        return res;
    }

    private boolean can(String A,int begin,int end){
        while(begin < end){
            if(A.charAt(begin) == A.charAt(end)){
                begin ++;
                end --;
            } else {
                return false;
            }
        }
        return true;
    }
}