subtask1和2全对,3一个WA其他全RE,求助大佬:(
查看原帖
subtask1和2全对,3一个WA其他全RE,求助大佬:(
1227031
ARTI001楼主2024/4/9 16:17
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
	char s1[200010],s2[200010];
	int kmp[200010];
	kmp[0]=0;
	cin>>s1+1;
	cin>>s2+1;
	int la=strlen(s1+1),lb=strlen(s2+1);
	
	int j=0;
	for(int i=2;i<=lb;i++)
	{
		while(j!=0&&s2[j+1]!=s2[i]) j=kmp[j];
		
		if(s2[j+1]==s2[i]) j++;
		
		kmp[i]=j;
	}
	
	j=0;
	for(int i=1;i<=la;i++)
	{
		while(j!=0&&s1[i]!=s2[j+1]) j=kmp[j];
		
		if(s1[i]==s2[j+1]) j++;
		
		if(j==lb)
		{
			cout<<i-lb+1<<endl;
			j=kmp[j];
		}
	}
	for(int i=1;i<=lb;i++)cout<<kmp[i]<<" ";
	return 0;
}
2024/4/9 16:17
加载中...