使用KMP算法求next数组

来源:互联网 发布:老男孩linux培训 编辑:程序博客网 时间:2024/05/18 06:41

KMP算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法。

下面我们来讲解KMP如何求next数组。


举例 
next[7]的计算,字符串第七位是c,将前面的6个字符,从头尾开始取5个组成子串比较,如果不相等,则从首尾取4个字符组成子串进行比较,如下 
5个字符的情况:abaab : baaba 
4个字符的情况:abaa : aaba 
3个字符的情况:aba : aba 此时相等,那么next[7] = 3+1 = 4 
如果一直比较到最后一个字符都不相等,那么该next值为1

测试题目:使用KMP算法在文本串S中找模式串P是一种常见的方法。假设S=P={xyxyyxxyx},亦即将S对自己进行匹配,匹配过程中正确的next数组是()

A.0,1,1,2,2,1,2,2,3

B.0,1,2,2,3,1,2,2,3

C.0,1,1,2,3,1,2,2,3

D.0,1,1,2,3,1,1,2,3


答案:C

1 0
原创粉丝点击