至于KMP是什么,next函数是什么我就不多说了,直接上方法:
- 首先明确什么是前缀什么是后缀:
abcd
前缀:abc ab a
后缀:d cd bcd - 例1 abaabcac
这个字符串一共有8位,若没有前缀和后缀相等为其他情况,置1,若有相等,置长度加1,一位相等置2类似。。。。。
1.第一位时,果断是0(函数说明里有,各种数据结构教材也有)
2.第二位时刻,看的是‘a’(该位之前的字符串),属于其他情况 1
3.看的是 ab 没有相等属于其他情况 1
4.aba 可能出现前缀a和后缀a,即相等,长度为1,所以该位1+1=2
5.abaa a 和 a 2
6.abaab ab 3
7.abaabc 1
8.abaabca a 2
所以结果为:01122312 - 例2:abaabaca
1.0
2.1
3.1
4.a 2
5.a 2
6.ab 3
7.aba 4
8.1
即:01122341