状态传递要保证之前的状态已经判断过
可以想象成固定右端点从左边收缩,来保证每次状态判断都是从最小区间开始的

public int getLongestPalindrome(String s, int len) {// 特殊用例判断
        if (len < 2) {
            return len;
        }
        boolean[][] dp  = new boolean[len][len];
        int max = 1;
        for (int i = 0; i < len; i++) {
            dp[i][i]=true;
        }
        //回文算法状态是先列后行,先左后右
        for (int r = 1; r <len ; r++) {
            for (int l = 0; l < r; l++) {
                if(s.charAt(l)==s.charAt(r)){
                    if(r-l<3){
                        dp[l][r]=true;
                    }else {
                        dp[l][r]=dp[l+1][r-1];
                    }
                    if(dp[l][r]){
                        max=Math.max(max,r-l+1);
                    }
                }
            }
        }
        return max;
    }