最长回文字符串

2020-06-19  本文已影响0人  Stack1_e27c

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:
输入: "cbbd"
输出: "bb"

class Solution {
    public String longestPalindrome(String s) {
        String ans = "";
        char[] str = s.toCharArray();
        int n = s.length();
        boolean[][] dp = new boolean[n][n];
        for(int l=0;l<n;++l)
        {
            for(int i=0;i+l<n;++i)
            {
                int j = i+l;
                if(l==0){
                    dp[i][j] = true;
                }else if(l==1){
                    dp[i][j] = (str[i] == str[j]);
                }else{
                    dp[i][j] = (str[i] == str[j] && dp[i+1][j-1]);
                }

                if(dp[i][j] && l>=ans.length()){
                    ans = s.substring(i,j+1);
                }
            }
        }
        return ans;
    }
}
上一篇下一篇

猜你喜欢

热点阅读