KMP算法

1. 朴素算法(比较是一位一位比的,计算机二进制比的效率很慢)
2.KMP算法
避免重复比较,及上图去掉2/3步骤
实现方法,先算next值:
next算法如下:
k = 0 (第一位)
若有 P(1)【P(1)代表第一位的A】 ~ P(K-1) = P(J-K+1) ~ P(J-1),则next值为K
(就是比方说看第五位的B,要看他前面的四位,发现有一个a和第一位的a重复,那么就得了2,比方说看x 前面如果是 abcab,则看到有ab和最前面的ab重复,那么就得3了)
代码感受下:



3. KMP算法优化。
比如:
这样的话,比较i[x] != j[x]时,前面a是相同的,KMP算法会回溯到上一个a进行比较,而改良版的KMP算法会回溯到第一个a进行比较。保证了回溯到最前面的循环体。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值