本系列主要写一些只需要考前记一记的知识点,供自己使用,时间有限不保证可读性

本方法,只适用于快速解决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数组的值如下表所示。

x123456
Sxababaa
S2...Sx-1--bbababbaba
next[x]011234