没输出
查看原帖
没输出
512587
Konnyaku_q楼主2023/5/21 12:14

RT

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
long long kmp[100021100],j=0;
string a,b;
int main()
{
	int lena=a.length() ,lenb=b.length() ;
	cin>>a>>b;
	for(int i=1;i<lenb;i++)
	{
		while(j>0&&b[i]!=b[j])
		{
			j=kmp[j-1];
		}
		if(b[i]==b[j])
		{
			j++;
		}
		kmp[i]=j;
	 } 
	 j=0;
	 for(int i=0;i<=lena;i++)
	 {
	 	while(j>0&&a[i]!=b[j])
		{
			j=kmp[j-1];
		}
		if(a[i]==b[j])
		{
			j++;
		}
		if(j==lenb)
		{
			cout<<i-(lenb-1)+1<<endl;
		}
	 }
	 return 0;
	 
}


2023/5/21 12:14
加载中...