Я пытался найти алгоритм для поиска самой длинной проблемы палиндромной подстроки.
Однако мой алгоритм провалил несколько тестовых случаев.
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 раза в разных частях строки, и по этой причине происходит сбой.
Как я могу изменить свое состояние, чтобы пройти тесты такого типа?
Заранее спасибо.