题意:

对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。


方法:
中心拓展法

思路:
        遍历,以字符串的每个字符作为中心,向左右两边拓展,寻找最长回文子串的长度。
        分为两种情况:
                                1)以A[i]作为中心
                                2)先判断A[i-1]==A[i],如果相等,A[i-1]和A[i]作为中心



class Solution {
public:
    
    int getLongestPalindrome(string A) {
        int res=0;
        int len=A.size();
        for(int i=0;i<len;i++){//遍历字符串
            int j=i-1,k=i+1;//以A[i]作为中心
            while(j>=0&&k<len){
                if(A[j]!=A[k])
                    break;
                j--;
                k++;
            }
            res=max(res,k-j-1);
            if(i-1>=0&&A[i-1]==A[i]){//先判断A[i-1]==A[i],如果相等,A[i-1]和A[i]作为中心
                j=i-2;
                k=i+1;
                while(j>=0&&k<len){
                    if(A[j]!=A[k])
                        break;
                    j--;
                    k++;
                }
                res=max(res,k-j-1);
            }
        }
        return res;
    }
};



时间复杂度:
空间复杂度: