Java calcula la longitud máxima de la subcadena palíndromo en la cadena especificada

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;
        
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/luzhensmart/article/details/112798253
Recomendado
Clasificación