KMP算法
# KMP算法定义
KMP算法是一种改进的字符串匹配 (opens new window)算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特 (opens new window)——莫里斯 (opens new window)——普拉特 (opens new window)操作(简称KMP算法)。KMP常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度 (opens new window)O(m+n)
它利用之前已经部分匹配这个有效信息,保持i 不回溯,通过修改j 的位置,让模式串尽量地移动到有效的位置。
# 详讲
参考:https://www.cnblogs.com/zhangboy/p/7635627.html
上次更新: 2023/09/05 17:45:42