kmp算法---python实现

本文介绍了KMP算法的基本思想,它改进了朴素字符串匹配算法的效率,避免了不必要的回溯。文章详细讲解了next数组的概念和计算,并提供了Python代码实现KMP算法的核心部分。
摘要由CSDN通过智能技术生成


一、kmp算法思想

kmp算法解决了字符串匹配算法中每次回都是要从头开始的缺陷。正常朴素字符匹配算法在匹配过程中只要有一个不符合就全部重新匹配,而kmp通过将之前匹配成功的部分信息利用起来,就类似与递归与动态规划。
递归通过分而治之得出答案,但造成有部分运算重复,所以发明了动规。

二、python实现

1.next数组

next数组代表的是匹配串在此次匹配失误所要跳转的匹配下标,原朴素匹配算法都是跳转到开头也就是next数组是全0。当前后有部分相同也就是知道前面部分匹配了就不需要继续匹配。如下图
在这里插入图片描述
所以next的值就是在该位置之前成功匹配部分的前后缀相同的最长公共串。
代码如下:

def next(str):
    nextarray=[0]
    for t in range(1,len(str)):
        #找出前后缀
        qian=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值