推荐这篇文章,图文并茂,讲解清晰,十分适合不了解者
总结:
目标串:a b c d a b f
模式串:a b f
模式匹配时,模式串首先比较目标串的0位。及之后两位,不成,直接切换到4位继续比较
如:
目标串:a b c d a b f
模式串: a b f
这样是最省时间的,朴素暴力法,通过逐一比较实现这一过程(模式串每次整体后移一位),浪费了时间;
KMP算法利用next数组实现了直接的切换过程,next包含了重复位置的信息,告诉我们,上述情况发生时,如何切换
这就是二者的原理差别,可以说根本目标一致,实现优化不同;