KMP算法

KMP算法

求得模式串中相等的前缀和后缀的最大长度,前缀是除了最后一个字符外的全部头部组合,后缀是除了第一个字符外的全部尾部组合

根据最大长度去求 next 数组,next数组相当于最大长度值整体向右移动一位,然后初始值赋为 -1。

开始将模式串P和文本串的字母一个个进行匹配,第 1 个匹配成功,第二个没有匹配成功,将模式串索引值为当前 next 数组值的元素移动到失配位置。

移动以后该位置仍然不匹配

再将模式串索引值为当前 next 数组值的元素移动到失配位置。这里next值为 -1。移动以后发现匹配。

再将模式串索引值为当前 next 数组值的元素移动到失配位置。这里next值为 2。移动以后发现匹配。

一直到最后匹配成功。

注:next[j] 的含义是:在子串的第 j 个字符与主串发生失配时,则跳到主串的 next[j] 位置重新与主串当前失配位置进行比较。

KMP算法

作者

lvjie

发布于

2021-08-19

许可协议


:D 一言句子获取中...