首页 新闻 会员 周边

实现KMP算法C++程序中的next[]是如何构造的?

0
悬赏园豆:50 [已解决问题] 解决于 2016-01-09 14:29

别只用公式化描述,看不懂。最好用一个简短又具有代表性的字符串,一步一步说明next[]数组的构造过程,如next[i]的值是怎么来的。

KMP
supervsky的主页 supervsky | 初学一级 | 园豆:144
提问于:2015-12-20 11:26
< >
分享
最佳答案
0

http://www.cnblogs.com/vsky/p/5068619.html

supervsky | 初学一级 |园豆:144 | 2016-01-09 00:06
其他回答(1)
0

假设待匹配的是P,在P[i] 匹配失败的时候就要跑到next[i]。其实在匹配P[i]时,我们已经知道了P[0]~P[i-1]是已经匹配好的了,那么就要找出最长的P[j]~P[i-1] (已经匹配字符串的尾缀),是模式P的前缀。

 

值得注意的是,计算next的时候是用不到待匹配字符串的。因为,都是假设,如果P[i]匹配失败的时候,应该从哪里继续匹配。重点在于不论待匹配的字符串是什么,只要当匹配P[i]失败的时候,已经匹配好了P[0]~P[i-1],而这个信息可以加以利用。

收获园豆:50
FishBoneX | 园豆:252 (菜鸟二级) | 2015-12-20 13:20

需要具体例子,你的回答不符合要求。

支持(0) 反对(0) supervsky | 园豆:144 (初学一级) | 2015-12-21 17:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册