本系列主要写一些只需要考前记一记的知识点,供自己使用,时间有限不保证可读性
本方法,只适用于快速解决408数据结构中KMP相关题目,不适用于算法竞赛或其他实战场景。
首先next数组前两位(next[1], next[2])是固定的0和1
next[x](x>2)的值为S2...Sx-1的后缀与S的前缀匹配得到的公共部分长度+1。
以字符串S=ababaa为例,求next[5]的值,应使用S2S3S4的后缀与原串S的前缀匹配(如下图),公共部分长度为2,故next[5]=2+1=3

字符串S=ababaa的next数组的值如下表所示。
| x | 1 | 2 | 3 | 4 | 5 | 6 |
| Sx | a | b | a | b | a | a |
| S2...Sx-1 | - | - | b | ba | bab | baba |
| next[x] | 0 | 1 | 1 | 2 | 3 | 4 |

Comments NOTHING