Descripción del Título
Para una cadena, diseñe un algoritmo eficiente para calcular la longitud de la subcadena palíndromo más larga.
Dada la cadena A y su longitud n , devuelva la longitud de la subcadena palíndromo más larga.
Ejemplo 1
entrar
"abc1234321ab",12
valor de retorno
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;
}
}