5. Longest Palindromic Substring

典型动归,从中间逐渐往两边扩展的,用size作外循环

class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() == 0) return "";
        int n = s.length();
        boolean[][] dp = new boolean[n][n];

        for (int i = 0; i < n; i++){
            dp[i][i] = true;
        }

        int maxLen = 1;
        String ans = s.substring(0, 1);
        for (int size = 1; size < n; size++){
            for (int i = 0; i + size < n; i++){
                int j = i + size;
                if ( (size < 2 && s.charAt(i) == s.charAt(j)) || (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]) ){
                    dp[i][j] = true;
                    maxLen = Math.max(maxLen, j - i + 1);
                    ans = s.substring(i, j + 1);
                }
            }
        }

        return ans;
    }
}

results for ""

    No results matching ""