Leetcode 5 最长回文子串 简单dp解法 java

2019-10-07  本文已影响0人  YUluo_101

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:

输入: "cbbd"
输出: "bb"

不管那些花里胡哨的 直接暴力dp

class Solution {
    public String longestPalindrome(String s) {
        if (s==null || s.length() <1)
            return "";
        int len = s.length();
        String ret = "";
        boolean[][] dp = new boolean[len][len];
        for(int i =0;i<len;i++)
            dp[i][i] = true;
        for(int i=len-1;i>=0;i--){
            for(int j=i;j<len;j++){
                if(s.charAt(i) == s.charAt(j) && (j - i < 2 || dp[i + 1][j - 1])){
                    dp[i][j] = true;
                }
                else
                    dp[i][j]=false;
                if(j-i+1 > ret.length() &&dp[i][j]){
                    ret = s.substring(i,j+1);
                }
            }
        }
        return ret;
    }
}
上一篇下一篇

猜你喜欢

热点阅读