5 - Longest Palindromic Substring

 JAVA

  • class Solution {
        public String longestPalindrome(String s) {
            int n = s.length();
            boolean[][] f = new boolean[n][n];
            for (var g : f) {
                Arrays.fill(g, true);
            }
            int k = 0, mx = 1;
            for (int i = n - 2; i >= 0; --i) {
                for (int j = i + 1; j < n; ++j) {
                    f[i][j] = false;
                    if (s.charAt(i) == s.charAt(j)) {
                        f[i][j] = f[i + 1][j - 1];
                        if (f[i][j] && mx < j - i + 1) {
                            mx = j - i + 1;
                            k = i;
                        }
                    }
                }
            }
            return s.substring(k, k + mx);
        }
    }
C++

  • class Solution {
    public:
        string longestPalindrome(string s) {
            int n = s.size();
            vector<vector<bool>> f(n, vector<bool>(n, true));
            int k = 0, mx = 1;
            for (int i = n - 2; ~i; --i) {
                for (int j = i + 1; j < n; ++j) {
                    f[i][j] = false;
                    if (s[i] == s[j]) {
                        f[i][j] = f[i + 1][j - 1];
                        if (f[i][j] && mx < j - i + 1) {
                            mx = j - i + 1;
                            k = i;
                        }
                    }
                }
            }
            return s.substr(k, mx);
        }
    };

Comments