哪错了???
查看原帖
哪错了???
534313
zqc123楼主2022/4/5 12:08
#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=1000010;
int ne[N],lp,ls,j;
char s[M],p[N];
int main()
{
	cin>>p+1;
	cin>>s+1;
	lp=strlen(p+1);
	ls=strlen(s+1);
	for(int i=2;i<=ls;i++)
	{     
		while(j&&s[i]!=s[j+1])
		{
			j=ne[j]; 
		}
    	if(s[j+1]==s[i])
		{	
			j++;   
    	}	
		ne[i]=j;
    }
    j=0;
    for(int i=1;i<=lp;i++)
	{
        while(j>0&&s[j+1]!=p[i])
        {
        	j=ne[j];
		}
        if(s[j+1]==p[i]) 
        {
        	j++;
		}
        if(j==ls)
		{
			cout<<i-ls+1<<endl;
			j=ne[j];
		}
    }
    for(int i=1;i<=ls;i++)
    cout<<ne[i]<<" ";
	return 0;
}

2022/4/5 12:08
加载中...