首页 > 其他 > 详细

最长回文子串-动态规划

时间:2019-07-05 01:27:00      阅读:133      评论:0      收藏:0      [点我收藏+]
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!