5.最長迴文子串

題目描述:

給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。

示例 1:

輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。

示例 2:

輸入: "cbbd"
輸出: "bb"

分析:

 動態規劃

 

代碼:

 class Solution {
    public String longestPalindrome(String s) {
        int length=s.length();
        if(length==0)
            return "";
        boolean[][] dp=new boolean[length][length];
        int startIndex=0;
        int maxLength=1;
        for(int i=0;i<length;i++){
            for(int j=0;j<=i;j++){
                if(j==i){
                    dp[j][i]=true;
                }else if(j+1==i){
                    dp[j][i]=(s.charAt(j)==s.charAt(i));
                }else{
                    dp[j][i]=(dp[j+1][i-1]&&s.charAt(j)==s.charAt(i));
                }
                if(dp[j][i]&&i-j+1>maxLength){
                    maxLength=i-j+1;
                    startIndex=j;
                }
            }
        }
        return s.substring(startIndex,startIndex+maxLength);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章