关于KMP下标更改
  • 板块学术版
  • 楼主Lovable_Wind
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/7 18:53
  • 上次更新2023/10/27 21:34:36
查看原帖
关于KMP下标更改
112631
Lovable_Wind楼主2022/7/7 18:53
void getNext(){
	nxt[1]=0;
	for (int i=2,j=0;i<=n;i++){
		while(j>0&&a[i]!=a[j+1]) j=nxt[j];
		if (a[i]==a[j+1]) j++;
		nxt[i]=j;
	}
}
void getF(){
	for (int i=1,j=0;i<=m;i++){
		while(j>0&&(j==n||b[i]!=a[j+1])) j=nxt[j];
		if (b[i]==a[j+1]) j++;
		f[i]=j;
		if (f[i]==n) ans++;
	}
}

上面是一份KMP模板,但可以发现遍历时f是从1开始遍历的,但是...用string写的话,下标从0开始。那么需要改动哪些地方啊,有点懵

萌新刚学勿喷qaqaq

2022/7/7 18:53
加载中...