动态规划,最长回文子字符串

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            int ans=0;
            boolean[][] dp=new boolean[s.length()][s.length()];
            for(int i=0;i<s.length();i++){
                dp[i][i]=true;
            }
            //dp数组遍历赋值
            for(int i=s.length()-1;i>=0;i--){
                for(int j=s.length()-1;j>=i;j--){
                    //转移方程
                    dp[i][j]=(s.charAt(i)==s.charAt(j))&&(i==j||j==i+1||dp[i+1][j-1]);
                    if(dp[i][j]==true){
                        ans=Math.max(j-i+1,ans);
                    }
                }
            }
            System.out.println(ans);
            
            
            
        }
        
    }
}