什么是回文?就是正着的字符串和反着的字符串是一样的。比如“aba”,比如“owekkewo”。
这个算法在leetcode上判定时间过长,而没通过,先记录一下吧,后面想想怎么改善。
public class Solution {
private Object object;
public String longestPalindrome(String s) {
String s1;
start = SystemClock.currentThreadTimeMillis();
if (s.isEmpty()) {
return null;
} else if (s.length() == ) {
return s;
} else {
ArrayList<String> arrayList = new ArrayList<>();
for (int i = ; i < s.length(); i++) {
//从前往后,逐个字母
String substring1 = s.substring(i, i + );
for (int j = i + ; j < s.length(); j++) {
//从前往后,逐个字母
String substring2 = s.substring(j, j + );
//若有匹配,进入
if (substring1.contentEquals(substring2)) {
//原始子字符串
String substring = s.substring(i, j + );
// //子字符串的反转字符串
// String reverse = process(s.substring(i, j + 1));
if (process(s.substring(i, j + ))) {
//匹配子字符串的长度
int length = substring.length();
//如果arraylist是空的
if (arrayList.isEmpty()) {
//保存
arrayList.add(substring);
} else if (arrayList.get().length() <= substring.length()) {
arrayList.remove();
arrayList.add(substring);
}
}
// //如果正反相等
// if (reverse.contentEquals(substring)) {
// //匹配子字符串的长度
// int length = substring.length();
//
// //如果arraylist是空的
// if (arrayList.isEmpty()) {
// //保存
// arrayList.add(substring);
// } else if (arrayList.get(0).length() <= substring.length()) {
// arrayList.remove(0);
// arrayList.add(substring);
// }
// }
}
}
}
if (arrayList.isEmpty()) {
return s.substring(, );
} else {
return arrayList.get();
}
}
}
public boolean process(String subString) {
for (int i = subString.length(); i > ; i--) {
String reverse = subString.substring(i - , i);
String negative = subString.substring(subString.length() - i, subString.length() - i + );
if (!negative.contentEquals(reverse)) {
return false;
}
}
return true;
}
}