- 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);
- }
- }
来源: http://www.bubuko.com/infodetail-3113671.html