若p[k] != p[j],则令k = next[k],若p[k] == p[j],next[j + 1] = k + 1,否则重复此过程。 具体代码实现如下: #include<iostream>#include<string>usingnamespacestd;voidgetNext(conststring&p,intnext[]){intlen=(int)p.size();next[0]=-1;intk=-1;intj=0;while(j<len-1){if(k...
2.将各个对应的前缀后缀最长公共元素长度 整体向后移一位,将第一位设为-1。就得到了其的next数组(第1,2位-1,0的情况) 完整代码: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> void prefix_table(char pattern[], int prefix[], int n)//求出next...
深入理解KMP算法中next数组的求法及代码实现 接下来,让我们一起探索如何在KMP算法中求解next数组。首先,明确next数组的意义。它记录了模式串从下标0到j - 1的子串最大相等前缀与后缀的长度,其中j为模式串的位置。以模式串pattern为例,下标为0的元素a没有子串,因此next[0] = -1;下标为1的元素...
就得到了其的next数组(第1,2位-1,0的情况) 完整代码: #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>void prefix_table(char pattern[], int prefix[], int n)//求出next数组{prefix[0] = 0;int len = 0;int i = 1;while (i < n){if (pattern...