二建小科普为您分享以下优质知识
KMP算法中的next数组表示模式串中前缀和后缀的最长公共部分长度。因此,我们需要先从模式串中生成next数组,具体求法如下:
1. 初始化next数组,next[0]=-1,next=0;
2. 设置两个指针i和j,初始时i=2,j=0;
3. 比较p[j]和p[i-1]的值:
① 如果p[j]=p[i-1],则next[i]=j+1,i++,j++;
② 如果j=0,则next[i]=0,i++;
③ 如果p[j]!=p[i-1],则将指针j移动到next[j]的位置,循环比较p[j]和p[i-1]的值,直到符合①或②两种情况为止。
4. 重复步骤3,直到i=n。
其中n为模式串的长度。
例如,对于模式串"ABCDABD",生成的next数组为[-1,0,0,0,0,1,2]。
评论列表(4条)
我是公众科技网的签约作者“二建小科普”!
希望本篇文章《kmp算法中的next怎么求》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育,学历提升
本文概览:KMP算法中的next数组表示模式串中前缀和后缀的最长公共部分长度。因此,我们需要先从模式串中生成next数组,具体求法如下:u0