90分过不了!!!怎么办???
查看原帖
90分过不了!!!怎么办???
480345
like_rain楼主2021/7/13 15:32
//3426
#include<bits/stdc++.h>
using namespace std;
int a[500010],minn[500010],next[500010];
char s[500010];
int main()
{
	cin>>s+1;
	int n=strlen(s+1),j=0;
	for(int i=2;i<=n;i++)
	{
		while(j>0&&s[j+1]!=s[i]) j=next[j];
		if(s[j+1]==s[i]) j++;
		next[i]=j;
	}
	for(int i=2;i<=n;i++)
	{
		minn[i]=i;
		if(a[minn[next[i]]]>=i-next[i]) minn[i]=minn[next[i]];
		a[minn[i]]=i;
	}
	cout<<minn[n];
	return 0;
}

求dalao指点

2021/7/13 15:32
加载中...