专栏文章

KMP【模板】

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq71k3d
此快照首次捕获于
2025/12/04 00:00
3 个月前
此快照最后确认于
2025/12/04 00:00
3 个月前
查看原文
CPP
void KMP(string a,string b){
	a='-'+a,
	b='-'+b;
	int n=a.size()-1,m=b.size()-1;
	nex[1]=0;
	for(int i=2,j=0;i<=m;i++){
		while(j>0 && b[i]!=b[j+1]){
			j=nex[j];
		}
		if(b[i]==b[j+1]){
			j++;
		}
		nex[i]=j;
	}
	for(int i=1,j=0;i<=n;i++){
		while(j>0 && b[j+1]!=a[i]){
			j=nex[j];
		}
		if(a[i]==b[j+1]){
			j++;
		}
		if(j==m){
			cout<<i-m+1<<'\n';
			j=nex[j];
		}
	}
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...