只是想谈谈学习kmp中的一点体会

我觉得写出一篇能够看一遍就能理解KMP的博客是很难的,理解这个算法是需要时间和能力的,所以我就不不自量力的去尝试了,所以我就谈一谈我认为kmp学习中比较难理解的点和比较重要的点。建议学习过kmp但还是有疑惑的同学看。
我们看next数组
上一张图片吧,我现在箭头指向的是我现在要求第i为的next值,而0..i-1的next值都求过了。
这里写图片描述

先看next[i-1]
这里写图片描述
假设两段红色的相等,然后我们比较第i位和第next[i-1]+1位,如果相等,那么皆大欢喜,不然的话,这个next[i-1]就变成了next[next[i-1]],为什么呢。
看图
这里写图片描述
这个绿色的是next[next[i-1]],然后绿色的这一圈和蓝色的这一圈是相等的,因为他们都和红色的相等。那么我们只有比较第一段绿色的后一位和第i位就行了。如果还是不匹配的话,就再next一次。

同理,kmp中的匹配过程也就和这个一样了。

希望能够有所帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值