Skip to content

Longest Palindromic Substring using the most naive suffix array #128

@FredWe

Description

@FredWe

Although a TLE but i like the main idea of suffix array, the real life will never give you a TLE (unless your boss will);

public class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 2) return s;
        int len = s.length();
        StringBuilder sb = new StringBuilder(s + "$").append(new StringBuilder(s).reverse());
        String[] suffixArr = new String[sb.length()];
        for (int i = 0; i < suffixArr.length; i++) {
            suffixArr[i] = sb.substring(i);
        }
        Arrays.sort(suffixArr);
        String res = "";
        for (int i = 1; i < suffixArr.length; i++) {
            int j = 0;
            while (j < suffixArr[i - 1].length() && j < suffixArr[i].length() && suffixArr[i - 1].charAt(j) == suffixArr[i].charAt(j)) j++;
            if (j > res.length()){
                String lcp = suffixArr[i - 1].substring(0, j);
                if (s.indexOf(lcp) == s.indexOf(new StringBuilder(lcp).reverse().toString())) {
                    res = lcp;
                }
            }
        }
        return res;
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions