社区
数据结构与算法
帖子详情
十万火急!求KMP模式匹配算法求next值容易理解的讲解
skyaspnet
2008-07-25 07:09:21
十万火急!求KMP模式匹配算法求next值容易理解的讲解
以'ababaaababaa' 为例,关系到考试,请教各位大侠,分不够再加
...全文
148
1
打赏
收藏
十万火急!求KMP模式匹配算法求next值容易理解的讲解
十万火急!求KMP模式匹配算法求next值容易理解的讲解 以'ababaaababaa' 为例,关系到考试,请教各位大侠,分不够再加
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
skyaspnet
2008-07-25
打赏
举报
回复
自己给解决了....
(
算法
)通俗易懂的字符串
匹配
KMP
算法
及
求
next
值
算法
大多数据结构课本中,串涉及的内容即串的
模式
匹配
,需要掌握的是朴素
算法
、
KMP
算法
及next
值
的
求
法。在考研备考中,参考严奶奶的教材,我也是在关于
求
next
值
的
算法
中卡了一下午时间,感觉挺有意思的,把一些思考的结果整理出来,与大家一起探讨。 以下的顺序为 1、最基本的朴素
算法
2、优化的
KMP
算法
3、应
算法
需要定义的next
值
4、手动写出较短串的next
值
的方法 5、最难
理解
的、足足有5行的代码...
串---
KMP
模式
匹配
算法
之获取next数组
(一)获取
模式
串T的next数组
值
1.回顾 我们所知道的
KMP
算法
next数组的作用 next[j]表示当前
模式
串T的j下标对目标串S的i
值
失配时,我们应该使用
模式
串的下标为next[j]接着去和目标串失配的i
值
进行
匹配
而
KMP
算法
的next
求
值
函数 我们可以知道next除了j=1时,next[1]为0,其他情况都是比较前缀和后缀串的相似度(第三种情况是当相似度为0时,next
值
为0+1=1) next数组,是用来评判前后缀的相识度,而next
值
,则是等于相似度加一
KMP
模式
匹配
算法
——next
值
求
解
j 1 2 3 4 5 6 7 8
模式
串 a b a a b c a c next[j] 0 1 1 2 2 3 1 2 各个位的解释 1.前两位必定为0和1。 2.计算第三位的时候,看第二位b的next
值
,为1,则把b和1对应的a进行比较,不同,则第三位a的next的
值
为1,因为一直比到最前一位,都没有发生比较相同的现象。 3.计算第四位的时候,看第三位a的next
值
,为1,则把a...
KMP
模式
匹配
算法
next 数组的推导
KMP
模式
匹配
算法
是为了解决在一个主串中去寻找子串的问题,在没有
KMP
算法
之前,人们采用那种人们最
容易
想到的以字串按照主串从首位开始一位一位后移的方法,但是这种方法很费时间,例如下面例子:当比较到最后一位的时候,发现该段不
匹配
,接下来指针又要回溯到开头,开始第二个遍历,但是很明显第二个也不会存在
匹配
的情况,但是这种
算法
是无法判别的,所以就需要一种非常高效的
匹配
算法
,于是,就衍生出了
KMP
算法
,要熟悉
KMP
算法
,就必须要知道
模式
串的 next 数组怎么推导。
KMP
模式
匹配
算法
求
next数组
给大家介绍一种手工
求
解
KMP
模式
匹配
算法
中next数组的方法,超级简单。下面以字符串abaabcac进行说明: j 0 1 2 3 4 5 6 7
值
a b a a b c a c next 0 1 1 2 2 3 1 2 j是字符串中的位置(从0开始计算),
值
是字符串对应j位置的字母,next是next数组中的
值
。 下面是计算方法: (1)首先next[0] = 0,n...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章