码迷,mamicode.com
首页 > 其他好文 > 详细

5. 最长回文子串

时间:2021-06-06 18:43:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:amp   long   动态规划   har   遍历   思路   不能   class   元素   

2刷。感觉看矩阵不太好理解,还是按原来的。
动态规划假设子问题已经解决,看最后一步。

class Solution {
    //dp[i][j],ss[i...j]是不是回文子串
    //递推
    //dp[i][j]=dp[i+1][j-1]&&s[i]==s[j]
    //注意循环遍历的顺序。
    public String longestPalindrome(String s) {
       char[] ss=s.toCharArray();
       boolean[][] dp=new boolean[ss.length][ss.length];
       int max=0;
       int left=0,right=0;
       for(int i=0;i<ss.length;i++)
           dp[i][i]=true;
       for(int j=1;j<ss.length;j++){//实际上是固定最后一个,变换起点
       //不能是固定起点,变换终点。这也不是解动态规划的思路:看最后一步
           for(int i=0;i<j;i++){//对角线以上的
                if(i+1<=j-1)
                    dp[i][j]=dp[i+1][j-1]&&(ss[i]==ss[j]);
                else{//两个元素
                    dp[i][j]=(ss[i]==ss[j]);
                }
                if(dp[i][j]&&max<(j-i+1)){
                     max=j-i+1;
                     left=i;
                     right=j;
                }
           }
       }
       return s.substring(left,right+1);

    }
}

5. 最长回文子串

标签:amp   long   动态规划   har   遍历   思路   不能   class   元素   

原文地址:https://www.cnblogs.com/wsshub/p/14853431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!