KMP算法

KMP算法用在字符串查找、匹配子串操作中
因为我是初学者,尝试从初学者角度说明一下KMP算法。
规定说明
主串:被匹配串
模式串:目标匹配串
主串长度>模式串

KMP算法的基本思想:利用已经匹配过了的、模式串的 j 个字符 作为已知量,根据这 j 个字符,来确定 i,j的回溯量,避免简单匹配算法的回溯至起点。

已经匹配过了的 j 个字符,是模式串的一个子串。
逻辑分析这个子串,如果能找到,这样一个K值
使 P1 P2 …Pk-1 = Pj-k+1 Pj-k+2 …Pj
那么,我们只需要将 j 回溯到 k-1 位置即可。
(本质上,就是找 该 j 个字符组成的子串中 前面有没有 k 个长度的子串,在后面倒序出现,然后令 j 回溯至 k 位置 即可)
(ps:这样得到的NEXT函数是不完美的,需要对其做出修正。下次更新。水平有限,海涵。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值