KMP经典例子+新

发布时间:2019年09月01日 阅读:286 次

https://blog.csdn.net/deerly_/article/details/78868208


举个栗子,ababababc和ababc的匹配,ababc的Next是00120, 当c个第五个a不匹配了,就说明他们前四个是匹配的,这时Next[3]=2,说明ab和前缀ab是一样的,既然34位置上的ab可以和母串ab匹配,前缀的ab自然就可以,这样直接去比较abab*a*babc和abab*c* 就好啦,省了很多时间。本来kmp就是不想浪费之前已经匹配过的信息才加以优化的。



另:求next数组的经典例子


1 2 3 4 5 6 7

a b a b a b c

0 0 1 2 3 4 0

求最后一个字符的next值的时候,我们需要先将c(7) 与 a(5)

先进行比较,因为c之前的abab与a之前的abab相同

接着会跳转c(7)与a(3)比较

因为c之前的ab与a之前的ab相同,失配后跳转的幅度变大了。


Tag:
相关文章

发表评论: