题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
import java.util.Scanner; public class Main { public static void main(String[] args) { //给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 //所谓回文串,指左右对称的字符串。 //所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 Scanner in = new Scanner(System.in); String str = in.nextLine(); int maxLength = 1;//回文子串最小为1 int left = 0;//左指针 int right = 0;//右指针 String[] s = new String[str.length()]; for (int i = 0; i < str.length(); i++) { s[i] = String.valueOf(str.charAt(i)); } int length = s.length; for (int i = 1; i < length; i++) { if (i + 1 < s.length && s[i - 1].equals(s[i + 1])) { right = i + 1; left = i - 1; while (right<length&&left>=0&&s[right].equals(s[left])) { maxLength = Math.max(right - left + 1, maxLength); left--; right++; } } if (i - 1 >= 0 && s[i].equals(s[i - 1])) { right = i; left = i - 1; while (right<length&&left>=0&&s[right].equals(s[left])) { maxLength = Math.max(right - left + 1, maxLength); left--; right++; } } } System.out.println(maxLength); in.close(); } }