我正在尝试寻找最长回文子串问题的算法。
但是,我的算法却失败了几个测试用例。
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次,因此它失败了。
如何更改我的条件,以便我可以通过这种类型的测试用例?
谢谢。
答案 0 :(得分:1)
在String
中搜索temp
时,您不会检查rev
是否是回文。
private static boolean isPalindrome(String s) {
String rev = new StringBuilder(s).reverse().toString();
return s.equals(rev);
}
添加此方法并在分配maxPal = temp
值之前检查它。