#一座城市的眷念#
**KMP算法之核心——next数组经典求解方法
- 算法功能简述:
KMP算法关键是利用字符串匹配失败后的信息,尽可能的减少模式串与主串的匹配次数以达到快速匹配的目的。其核心在于求解next数组,为模式串提供局部匹配信息。
**
- Next数组求解:
**
- 说明: 关于next数组的求解过程,本人多次查看数据资料,观看视频讲解,有许多不同的求解过程。这里,仅以数据结构教材中的求解方法进行讲解。其余方法,读者可根据自身需求自行学习。
next数组的求解关键在于找到模式串中最大公共前缀和公共后缀,如:
假设模式串为“abaabcac”
前缀:除最后一个字符外,例如,a、ab、aba、abaa、abaab、abaabc、abaabca
后缀:除第一个字符外,例如,c、ac、cac、bcac、abcac、aabcac、baabcac
首先我们给每个字符都标上标号:
模式串:abaabcac
序号:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|