题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

class Solution {
public:
    int getLongestPalindrome(string A, int n) {
        int m=1;
        for(int i=0; i<n; i++)
            for(int j=n-1; j>i; j--)
            {
                if(A[i]==A[j])
                {
                    int t1=i,t2=j;
                    while(t1<n&&A[t1]==A[t2])
                    {
                        if(t1<t2)
                        {
                            t1++;
                            t2--; 
                            continue;
                        }
                        if(t1==t2)
                            m=max(m,(j-t2)*2+1);
                        else if(t1>t2)
                            m=max(m,(j-t2)*2);
                        break;
                    }
                }
            }
        return m;
    }
};
class Solution {
public:
    int getLongestPalindrome(string A, int n) {
        int m=1;
        //中间向两边展开
        for(int i=1; i<n; i++)
        {
            int j=1;//j为移动的位数
            while(i-j>=0&&i+j<=n&&A[i-j]==A[i+j])//121
                j++;
            m=max(m,j*2-1);
            j=0;
            while(i-j>=0&&i+j<=n&&A[i-j]==A[i+j-1])//11
                j++;
            m=max(m,j*2-2);
        }
        return m;
    }
};
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务