タイトル説明
文字列の場合、最長の回文部分文字列の長さを計算するための効率的なアルゴリズムを設計してください。
文字列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;
}
}