题目描述
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
示例1
输入
"abc1234321ab",12
返回值
7
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
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;
}
}