最长回文子串

题目:对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。"abc1234321ab",12  返回:7

思路:思路很直接,还是找对称轴,然后往两边扫,注意控制边界,得到最大值,对称轴也还是分两种,“aba”中'b'形和“abba”中'b'中间形。。

 public int getLongestPalindrome(String A, int n) {
           int max=0;
        for(int i=0;i<n-1;i++){
            if(A.charAt(i)==A.charAt(i+1)){
                int temp=0;
                int l=i,r=i+1;
                while(l>=0&&r<n&&A.charAt(l)==A.charAt(r)){
                    l--;
                    r++;
                    temp=temp+2;
                }
                if(max<temp) max=temp;
            }
            if((i-1)>=0&&(i+1)<n&&(A.charAt(i-1)==A.charAt(i+1))){
                int temp=1;
                int l=i-1,r=i+1;
                while(l>=0&&r<n&&A.charAt(l)==A.charAt(r)){
                    l--;
                    r++;
                    temp=temp+2;
                }
                if(max<temp) max=temp;
            }
            
        }
       
       return max; 
    }
原文地址:https://www.cnblogs.com/team42/p/6736711.html