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这种回文的情况 这种应该类似12345 6 54321 low = i-1; high = i+1; while(low>=0 && high<n && A.charAt(low)== A.charAt(high)) { //取每次回文字符串的最大长度 max = Math.max(max,high-low+1); //以每一个元素i的位置为中心 向两边进行滑动 再次判断是否为回文字符串 low--; high++; } } return max; } }