Изменить самое длинное палиндромное условие подстроки с определенным вводом. - PullRequest
0 голосов
/ 02 мая 2019

Я пытался найти алгоритм для поиска самой длинной проблемы палиндромной подстроки.

Однако мой алгоритм провалил несколько тестовых случаев.

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» присутствует 2 раза в разных частях строки, и по этой причине происходит сбой.

Как я могу изменить свое состояние, чтобы пройти тесты такого типа?

Заранее спасибо.

1 Ответ

1 голос
/ 02 мая 2019

Вы не проверяете, является ли String палиндромом при поиске temp в rev.

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

Добавьте этот метод и проверьте его перед присвоением значения maxPal = temp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...