是的没错还是我,next歧义问题解决了,但还是不会查找
查看原帖
是的没错还是我,next歧义问题解决了,但还是不会查找
801649
SN_Tashkent楼主2023/5/22 16:50
#include<iostream>
#include<cstring>
using namespace std;
int kmp[1000005]; 
string s1,s2;
int main()
{
	cin>>s1>>s2;
	int j;
	j=0;
	for(int i=1;i<=s2.size();i++)
	{
		while(j>0&&s2[i]!=s2[j])
		{
			j=kmp[j-1];
		}
		if(s2[i]==s2[j])
		{
			j++;
		}
		kmp[i]=j;
	}
	j=0;
	for(int i=1;i<=s1.size();i++)
	{
		while(j>0&&s2[j]!=s1[i])
		{
			j=kmp[j-1];
		}
		if(s2[j]==s1[i])
		{
			j++;
		}
		if(j==s2.size())
		{
			cout<<i-s2.size()<<endl;
			j=kmp[j-1];
		}
		
	}
	for(int i=0;i<s2.size();i++)
	  cout<<kmp[i]<<" ";
	return 0;
}
2023/5/22 16:50
加载中...