20分RE 求助
查看原帖
20分RE 求助
117192
无产者万岁楼主2021/7/4 09:09
#include <bits/stdc++.h> 
using namespace std;
string s,s_new;
int p[20000005];
int Init()
{
    int len=s.size(),j=2;
    s_new+='$';
    s_new+='#';
    for(int i=0;i<len;i++)
    {
        s_new+=s[i];
        s_new+='#';
    }
    s_new+='\0';  
    return s_new.size();  
}
int main()
{
   	cin>>s;
   	int len=Init(),maxn=-1,id,mx=0;
    for(int i=1;i<len;i++)
    {
        if(i<mx)
            p[i]=min(p[2*id-i],mx-i); 
        else
            p[i]=1;
		while(s_new[i-p[i]]==s_new[i+p[i]]) 
            p[i]++;
        if(mx<i+p[i])
        {
            id=i;
            mx=i+p[i];
        }
        maxn=max(maxn,p[i]-1);
    }
    cout<<maxn;
	return 0;
}
2021/7/4 09:09
加载中...