我爱你柏林哥

本文介绍了KMP算法中的关键概念——next数组,用于查找已知字符串中模式串的位置。next数组记录了子串中每个位置之前最长相等前后缀的长度,通过这个数组在不匹配时进行回溯,提高了搜索效率。文中还提到next数组的一种优化方法,尽管不是最优,但对理解KMP算法至关重要。
摘要由CSDN通过智能技术生成

kmp已知字符串找串的位置(串的模式匹配)

2f5cc9fafb2c4eaebbc1472cffab9c52.jpg

每个字符前的字符串都有最长相等前后缀。

最长相等前后缀的长度是移位的关键

用next存储子串最长相等前后缀

next数组的数值只和子串有关

next[i]=j(表示下标i的字符之前最长相等前后缀为j)

adef5adfb77c4050aa502b87d79a02b8.jpg

 next数组(有更优化的方法,这并不是很最好的)

99b997b4eeac4d0d897b79385bdc6583.jpg

对应主字符串和子串在不相同的时候通过next数组回溯到子串的某一位置再开始重新对应知道主字符串或子串结束

467579b9175b4ca5bbf22f8b1b38b69a.jpg

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值