最长回文子串-动态规划

19 阅读1分钟
# 最长回文子串
# 动态规划
# [i+1]=[j-1]

public static String longestPalindrome(String s){

    boolean[][] dp=new boolean[s.length()][s.length()];

    int res=1;

    String resStr=s.charAt(0)+"";

    for (int i = s.length()-1; i >=0; i--) {

        for (int j = i; j < s.length(); j++) {

            if(s.charAt(i)==s.charAt(j)&&(j-i<=1||dp[i+1][j-1])) {

                dp[i][j]=true;

                if(j-i+1>res) {

                    res=j-i+1;

                    resStr=s.substring(i,j+1);

                }

            }

        }

    }

    return resStr;

}