题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

#include<iostream>
using namespace std;
int main()
{
    string str;
    while(cin>>str)
    {
        int i=0;
        int len=str.size();
        int maxlen=0;
        while(str[i]!='\0')
        {
            int l=0;
            if(i>0)
            {
                l=i-1;
            }
            int r=i+1;
            if(r<len&&str[i]==str[r])//single
            {
                int temp=2;
                r=r+1;
                while(l>=0&&r<len&&str[l]==str[r])
                {
                    l--;
                    r++;
                    temp+=2;
                }
                if(temp>maxlen)maxlen=temp;
            }
            if(i>0)
            {
                l=i-1;
            }
            r=i+1;
            if(r<len&&str[l]==str[r])//double
            {
                int temp=3;
                l--;
                r++;
                while(l>=0&&r<len&&str[l]==str[r])
                {
                    l--;
                    r++;
                    temp+=2;
                }
                if(temp>maxlen)maxlen=temp;
            }
            i++;
        }
        cout<<maxlen<<endl;
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务