Luna's blog 月亮月亮酱

KMP算法笔记

2019-06-07

时间复杂度为O(n^2)字符串匹配算法很容易写出来,暴力遍历即可,
暴力匹配之所以需要大量的时间,是因为存在最大的局部匹配,每一轮匹配失败后,主串和模式串的字符指针都要回退,并从头开始尝试。
事实上,绝大部分这类字符匹配操作都是不必要的,因为对于主串内在前一轮迭代中已经接受过且对比成功的字符,我们已经掌握类它们的信息。只要充分利用这些信息就可以大大提高匹配算法的效率。 KMP算法的关键就是在失配的时候不必完全回退到起始位置,那么应该从什么位置开始匹配才能保证尽可能的多往后移动字符串的同时又遗漏可能的匹配呢?

最长前缀和最长后缀


Similar Posts

Content