在模拟 KMP 匹配过程之前,我们先建立两个概念:
- 前缀:对于字符串 abcxxxxefg,我们称 abc 属于 abcxxxxefg 的某个前缀。
- 后缀:对于字符串 abcxxxxefg,我们称 efg 属于 abcxxxxefg 的某个后缀。
后缀就是相当于这个字符串减去第一个字符剩下的字符串。
前缀就是相当于这个字符串减去最后一个字符剩下的字符串。
next数组的值
储存从位置0开始到当前位置的字符串的前后缀的最长相等前后缀
举个例子:
- 字符串
a没有前后缀,值为0. - 字符串
aa的前缀只有a,后缀只有a,值为1. - 字符串
aab的前缀有a,aa,后缀有a,ab,最长相等前后缀值为1,但在b的位置没有,a,a这一对是属于aa字符串的,也就是下标为1的时候,所以这个的next数组为next=[0,1,0]

aaa,下标为2的时候值当然是2
aaab,下表为3的时候值是0.



本文讲解了KMP匹配算法的基础概念,包括前缀和后缀的定义,以及next数组的作用——存储字符串中每个位置前后缀的最长相等部分长度。通过实例演示如何计算next数组并应用于字符串匹配。

被折叠的 条评论
为什么被折叠?



