蒟蒻求助大佬
查看原帖
蒟蒻求助大佬
198835
阴阳八卦楼主2020/7/24 15:31
#include<bits/stdc++.h>
using namespace std;
int f[1000010];
string s,t;
int main()
{
	cin>>s>>t;//这个地方改成getline就全WA了,这是为什么啊?萌新不懂啊!
	t=" "+t;
	int ans=0;
	int len1=t.size(),j=0;
	f[1]=0;
	for(int i=2;i<len1;i++)
	{
		while(j&&t[i]!=t[j+1])j=f[j];
		if(t[j+1]==t[i])j++;
		f[i]=j;
	}
	j=0;
	int len2=s.size();
	for(int i=0;i<len2;i++)
	{
		while(j&&s[i]!=t[j+1])j=f[j];
		if(s[i]==t[j+1])j++;
		if(j==len1-1)
		{
			ans++;
			printf("%d\n",i-len1+3);
		}
	}
	for(int i=1;i<len1;i++)printf("%d ",f[i]);
	return 0;
}
2020/7/24 15:31
加载中...