前缀表
例如:aabaaf
前缀表
a
aa
aab
aaba
aabaa
后缀表
f
af
aaf
baaf
abaaf
最长相等前后缀
a 0
aa 1
aab 0
aaba 1
aabaa 2
aabaaf 0
前缀表
010120
next prefix都是放的前缀表
通常存放前缀表减1
-1 0 -1 0 1 -1
发生了冲突看冲突位置前一位前缀表对应的值是多少,这个值对应下标2的位置。然后就跳到对应下标的位置
或者整体整体右移,第一位放1
0-1 0 1 01 2
遇见冲突的时候是直接比较冲突位置(f)对应的这个所谓next数组的值
前缀表原封不动的作为next数组依然可以完成KMP工作
初始化
处理前后缀不相同的情况
处理前后缀相同的情况
更新next数组值
i 后缀末尾位置
j 前缀末尾位置,还代表i之前包括i之前的子串的最长相等前后缀的长度