April 08, 2019

5. Longest Palindromic Substring

5. Longest Palindromic Substring

class Solution {
    public String longestPalindrome(String s) {
        if (s.length() < 2) {
            return s;
        }
        boolean[][] isPalindrome = new boolean[s.length()][s.length()];
        
        String longest = s.substring(0, 1);
        
        for (int i = 0; i < s.length(); i++) {
            isPalindrome[i][i] = true;
        }
        
        for (int i = 0; i < s.length(); i++) {
            for (int j = 0; j < i; j++) {
                isPalindrome[j][i] = s.charAt(j) == s.charAt(i) && ( i - j <= 2 || isPalindrome[j + 1][i - 1]);
                if (isPalindrome[j][i] && i - j + 1 > longest.length()) {
                    longest = s.substring(j, i + 1);
                }
            }
        }
        
        return longest;
    }
}
comments powered by Disqus