7.20day9

文章探讨了在LeetCode上的字符串匹配问题,重点介绍了KMP算法的难点和理解,特别是next数组的构建过程。作者提到,next数组用于记录前缀和后缀的匹配信息,对于不匹配时如何移动指针有关键作用。虽然算法复杂,但通过实践和学习资源如代码随想录,可以逐步掌握。
摘要由CSDN通过智能技术生成

28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

kmp算法着实非常烧脑 还是结合代码随想录里面去看

自己也总结了一下 next数组里j的走法 

next具体函数构建还要多练

自己也写了一下这个前缀表

  • 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串;
  • 后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串

i表示后缀末尾 j表示如果匹配相同 i的前一个数 如果不匹配就找上一个j值知道完成匹配后的值 和相同相等前后缀的个数(如aabaa 前后缀相同是2:a aa aa a)

next和前缀表分为 四步

初始化

前后缀不相同

前后缀相相同

更新next数组

 

感觉脑子知道 手不会hhh 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值