KMP模式匹配算法
#KMP算法的原理
核心思想:若已匹配成功的序列中有后缀正好是模式串的前缀,则可以直接将模式串右滑到与这些字符对齐的位置,而无需回溯主串指针i,从而提高效率
解释概念:
前缀:是指除最后一个字符外,字符串的所有头部子串
后缀:是指除第一个字符外,字符串的所有尾部子串
部分匹配值:是指字符串的前缀和后缀的最长相等前后缀长度。
这玩意就是用来指导串在失配后的最右右移距离
由此,引出*next数组*
#next数组
i是指向主串的指针,j是指向子串模式串的指针
next\[j]的含义是:当模式串的第j个字符失配时,下一轮应该从模式串的第next\[j]个位置继续与主串当前字符比较。
我很难描述这样的手算结果,还是截图方便些