求助没输出
查看原帖
求助没输出
783941
Jamison楼主2022/10/13 13:12
#include<bits/stdc++.h>
using namespace std;
long long p[1000005];
string a,b;
int main()
{
	int n=a.size(),m=b.size();
	cin>>a>>b;
	p[1]=0;
	int j=0;
	for(int i=1;i<m;i++){
		while(j>0 && b[j+1] != b[i+1]) j=p[j];
		if(b[j+1]==b[i+1]) ++j;
		p[i+1]=j;
	}
	j=0;
	for(int i=0;i<n;i++){
		while(j>0 && b[j+1]!=a[i+1]) j=p[j];
		if(b[j+1]==a[i+1]) ++j;
		if(j==m){
			printf("%d\n",i+1-m+1);
			j=p[j];
		}
	}
	for(int i=1;i<=m;i++) cout<<p[i]<<" ";
	return 0;
}
2022/10/13 13:12
加载中...