kmp算法之我见

这里写自定义目录标题

kmp算法之我见

kmp算法思想精妙,一般人不理解为什么这么设计,也很难讲清楚为什么O(mn)就优化到了(m+n)。我现在完全理解了,即使next数组全部是-1,它也包含了子串的重要信息,如果匹配到此,突然失败了,我就不需要在主串上只挪1格,字串完全复位后继续匹配,而是在主串当前发生不匹配的位置开始,复位子串继续前行就可以了。可以想象在一条曲线上你去匹配一个钥匙的凹槽,如果钥匙中间一小段与最前面一小段完全相同,在匹配过程中,正好过了中间这一小段后就不同了,我们怎么处理?最好的办法就是把钥匙的最前面对准这里,继续往下匹配,而不是只挪一个单位,因为只挪1个单位肯定齿轮错开,前面已经匹配过的肯定就对不上了啊!这就是kmp的精妙之处!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值