思路:
KMP算法的精髓在于,它最大化里利用上了上次匹配上的子串,没有低效率的一位一位为开头去寻找,关键在于匹配上的子串可以决定下次开始寻找的位置。其中利用到的原理则是最长相同前缀后缀长度。比如我们已经寻找到了一个二者匹配的局部相同子串abcefabc,那么下次开始寻找(主串下标不变)的位置这则是这个相同子串abc的第4个e,但是如果局部相同的子串是abcdef的话,则下次开始的位置则从头开始判断。
1 |
|
KMP算法的精髓在于,它最大化里利用上了上次匹配上的子串,没有低效率的一位一位为开头去寻找,关键在于匹配上的子串可以决定下次开始寻找的位置。其中利用到的原理则是最长相同前缀后缀长度。比如我们已经寻找到了一个二者匹配的局部相同子串abcefabc,那么下次开始寻找(主串下标不变)的位置这则是这个相同子串abc的第4个e,但是如果局部相同的子串是abcdef的话,则下次开始的位置则从头开始判断。
1 | #include<stdio.h> |