class Solution { public String longestPalindrome(String s) { //动态规划 //不存在 if(s==null)return null; //长度为0 if(s.length()==0)return ""; int length=s.length(); char [] sToArray=s.toCharArray(); boolean [][] dp=new boolean[length][length]; int maxlen=1; int fromindex=0; int todex=1; //初始化 for(int i=0;i<length;i++){ dp[i][i]=true; if(i+1<length&&sToArray[i]==sToArray[i+1]){ dp[i][i+1]=true; maxlen=2; fromindex=i; todex=i+1+1; } } //dp for(int i=2;i<length;i++){ for(int j=0;j<i-1;j++){ dp[j][i]=dp[j+1][i-1]&&sToArray[j]==sToArray[i]; if(dp[j][i]&&i-j+1>maxlen){ maxlen=i-j+1; fromindex=j; todex=i+1; } } } return s.substring(fromindex,todex); } }
原文:https://www.cnblogs.com/NeverGiveUp0/p/11135637.html