学习KMP算法的一点个人体会

本文探讨了KMP字符匹配算法的学习心得,重点解析了next数组的重要性和动态规划的实现方式。通过理解最长公共前后缀,阐述了算法如何避免无效的重复比较,提高效率。并分享了个人实现KMP算法的代码片段。
摘要由CSDN通过智能技术生成

        这篇文章是对基于阶段性学习动态规划的一个实践性算法体会的记录,KMP算法,也就是大名鼎鼎的字符匹配算法,想必大家对这个字符匹配算法的目的已经很了解了,我最开始学习这个算法的时候其实也是主要是对算法中的next数组存在很多的疑惑。

首先来看next数组的作用,在此之前需要了解什么叫最长公共前后缀长度,对于一个字符串,"前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。举例来说就是


最长公共前后缀就是这两个集合的最长公共元素。这里我们先假设已经得到了这个next数组,next[i]就表示0-i字符子串的最长公共前后缀-1(在算法实现中为了方便next[0]设为-1),那么对于目标子串tar和待匹配串sou,设遍历下标分别是j,i,如果tar[j]!=sou[i],也就是此刻发生了失配,那么就要确定下一个sou中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值