用特定输入修改最长回文子串条件。

时间:2019-05-02 07:28:51

标签: java string algorithm palindrome

我正在尝试寻找最长回文子串问题的算法。

但是,我的算法却失败了几个测试用例。

public static String longestPalindrome2(String s) {
        String maxPal  = "";
        if (s == null || s.length() < 1) return "";
        String rev = new StringBuilder(s).reverse().toString();
        for (int i = 0; i < s.length(); i++) {
            for (int j = i; j < s.length(); j++) {
                String temp = s.substring(i, j);
                if(rev.contains(temp) ) {
                    if(temp.length() > maxPal.length()) {
                        maxPal = temp;
                    }
                }
            }
        }
        return maxPal;
    }

当我传递“ abacdgfdcaba”时,因为“ abacd”在字符串的differentnet部分中存在2次,因此它失败了。

如何更改我的条件,以便我可以通过这种类型的测试用例?

谢谢。

1 个答案:

答案 0 :(得分:1)

String中搜索temp时,您不会检查rev是否是回文。

private static boolean isPalindrome(String s) {
    String rev = new StringBuilder(s).reverse().toString();
    return s.equals(rev);
}

添加此方法并在分配maxPal = temp值之前检查它。