C语言KMP算法的next【j】怎么求
时间: 2024-03-04 17:51:06 浏览: 54
KMP算法中求NEXT的方法
KMP算法是一种字符串匹配算法,next[j]表示模式串中以第j个字符结尾的子串的最长公共前缀和后缀的长度。求解next[j]可以采用递推的方式,具体步骤如下:
1. 初始化,令next[0] = -1, next[1] = 0, i = 1, j = 0;
2. 递推求解next[j],如果p[i-1] == p[j],则next[i] = j + 1, i++, j++;
3. 如果p[i-1] != p[j],则令j = next[j],直到j = 0或者p[i-1] = p[j]为止;
4. 如果j = 0且p[i-1] != p[j],则令next[i] = 0,i++;
5. 重复2-4步骤,直到求得所有的next[j]。
其中,p为模式串,i表示当前正在求解的next值的下标,j表示当前正在匹配的子串的下标。
阅读全文