蒟蒻kmp求调,会写next不会匹配
查看原帖
蒟蒻kmp求调,会写next不会匹配
801649
SN_Tashkent楼主2023/5/18 19:27
#include<iostream>
#include<cstring>
using namespace std;
int next[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=next[j-1];
		}
		if(s2[i]==s2[j])
		{
			j++;
		}
		next[i]=j;
	}
	j=0;
	for(int i=1;i<=s1.size();i++)
	{
		while(j>0&&s2[j]!=s1[i])
		{
			j=next[j-1];
		}
		if(s2[j]==s1[i])
		{
			j++;
		}
		if(j==s2.size())
		{
			cout<<i-s2.size()<<endl;
			j=next[j-1];
		}
		
	}
	for(int i=0;i<s2.size();i++)
	  cout<<next[i]<<" ";
	return 0;
}
2023/5/18 19:27
加载中...