题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
import java.util.*;
public class Main {
static ArrayList<String> list;
public static void main(String[] args) {
list = new ArrayList<>();
Scanner in = new Scanner(System.in);
String input = in.next();
int length = input.length();
for (int i = 0; i < length; i++) {
for (int j = length; j > i; j--) {
String substring = input.substring(i, j);
if (check(substring)) {
list.add(substring);
}
}
}
list.sort((s1, s2) -> (s2.length() - s1.length()));
System.out.println(list.get(0).length());
}
private static boolean check(String s) {
int length = s.length();
for (int i = 0; i < length && 2 * i < length; i++) {
if (s.charAt(i) != s.charAt(length - 1 - i)) {
return false;
}
}
return true;
}
}
解题思路:
1, 对字符串的各个子字符串进行遍历, 并检测该子串是否是一个回文串;
2, 如果是, 则将其放入最终结果的集合中;
3, 遍历完成后, 从结果集中找到最长字符串长度并输出