import java.util.*; public class Solution { public int getLongestPalindrome(String A, int n) { if (n <= 0) { return 0; } if (n == 1) { return 1; } int max = 0; for (int i = 1; i< n ; i++) { //aa的情况 即重复元素回文的情况 类似aa或者 aabbaa baab //记录左边界 int low = i - 1; //记录右边界 int high = i; while (low >=0 && high < n && A.charAt(low) == A.charAt(high)) { //取每次回文字符串的最大长度 max = Math.max(max, high - low + 1); //以每一个元素i的位置为中心 向两边进行滑动 再次判断是否为回文字符串 low--; high++; } //aba这种回文的情况 这种应该类似1234 5 654321 int low2 = i - 1; int high2 = i + 1; while (low2 >= 0 && high2 < n && A.charAt(low2) == A.charAt(high2)) { //取每次回文字符串的最大长度 max = Math.max(max, high2 - low2 + 1); //以每一个元素i的位置为中心 向两边进行滑动 再次判断是否为回文字符串 low2--; high2++; } } return max; } }