kmp算法next计算方法_【数据结构——串】KMP算法——next数组Python的实现方式
用字符串 匹配字符串,即判断是否包含,表示字符串第个字符next数组本身也是一个记录下标的数组,所以会受到我们对于匹配项编码排序的影响,理论上不连续编码也是可以的,甚至不用数字编码都可行,但是为了编程方便,所以我们才采用了连续的整数进行编码本文采用如下编码方式,这种编码可以避免出现负数,(可以认为0位置的值为和任意字符都可以匹配的值,所以如果当前位置为0,那就需要j和i都要...
用字符串
next数组本身也是一个记录下标的数组,所以会受到我们对于匹配项编码排序的影响,理论上不连续编码也是可以的,甚至不用数字编码都可行,但是为了编程方便,所以我们才采用了连续的整数进行编码
本文采用如下编码方式,这种编码可以避免出现负数,(可以认为0位置的值为和任意字符都可以匹配的值,所以如果当前位置为0,那就需要j和i都要往前移一位)
假如数组next中,第j个元素的值5,则代表当j位置发生不匹配时,要移动
由于字符串
对于任意字符串
在计算next数组时,我们是逐步将编码变大的,这里将编码记为
在
结合这特点,我们设计代码的思路就是:
计算第
- 相等则
- 不相等:则利用
往回溯,找到相等的元素或者当
时直接令
注:
具体实现代码,主要要考虑的一点就是python中列表的第一个元素下标为0
def
改进后的KMP
可以看到上面的算法在计算next时其实是不考虑
在讲上面KMP算法时,我强调假如数组next中,第j个元素的值5,则代表当j位置发生不匹配时,要移动
所以和
注意:是nextval值指向nextval,因为当
#改进kmp
确定号next数组之后就是匹配了
def
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)