蒟蒻求助!!!
查看原帖
蒟蒻求助!!!
583593
AC_bee楼主2024/8/12 21:34

花花绿绿

#include<bits/stdc++.h>
using namespace std;
int kmp[10000001];
char a[1000001],b[10000001];
int a1,b1,j;
int main(){
	//freopen("","r",stdin);
	//freopen("","w",stdout);
	cin>>a+1>>b+1;	
	a1=strlen(a+1);
	b1=strlen(b+1);
	for(int i=2;i<=b1;i++)
	{
		while(j&&b[i]!=b[j+1])j=kmp[j];
		if(b[j+1]==b[i]) j++;
		kmp[i]=j;
	}
	j=0;
	for(int i=1;i<=a1;i++)
	{
		while(j>0 && b[j+1]!=a[i]) j=kmp[i];
		if(b[j+1]==a[i]) j++;
		if(j==b1){
			cout<<i-b1+1<<endl;
			j=kmp[j];
		}
	}
	for(int i=1;i<=b1;i++) cout<<kmp[i]<<' ';
	return 0;
}
2024/8/12 21:34
加载中...