5 longest palindrome substring

https://leetcode.com/problems/longest-palindromic-substring/

class Solution {
    public String longestPalindrome(String s) {
        char[] input = s.toCharArray();
        // dp[i][j] is whether s[i-j] is palindrome
        boolean[][] dp = new boolean[input.length][input.length];
        int maxLen = 0;
        int start = 0;
        int end = 0;
        for (int len = 1; len <= input.length; len++) {
            for (int i = 0; i + len - 1 < input.length; i++) {
                int j = i + len - 1;
                if (len == 1) {
                    dp[i][j] = true;
                } else if (i + 1 <= j - 1) {
                        dp[i][j] = dp[i + 1][j - 1] && (input[i] == input[j]);
                } else {
                    dp[i][j] = (input[i] == input[j]);
                }
                if (dp[i][j] && maxLen < len) {
                    maxLen = len;
                    start = i;
                    end = j;
                }
            }
        }
        return s.substring(start, end + 1);
    }
}

Last updated