[字符串匹配] KMP算法

参见阮一峰老师的文章:
http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

Jack Boxer的文章:
http://jakeboxer.com/blog/2009/12/13/the-knuth-morris-pratt-algorithm-in-my-own-words/

记忆的要点:

  1. 匹配方式
    移动位数 = 已匹配的字符数 - 对应的部分匹配值(第一个不匹配的字符的部分匹配值)
  2. 部分匹配表(Partial Match Table)
    "部分匹配值"就是"前缀"和"后缀"的最长的共有元素的长度
  3. 实质
    "部分匹配"的实质是,有时候,字符串头部和尾部会有重复。比如,"ABCDAB"之中有两个"AB",那么它的"部分匹配值"就是2("AB"的长度)。搜索词移动的时候,第一个"AB"向后移动4位(字符串长度-部分匹配值),就可以来到第二个"AB"的位置。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。