kmp算法next数组(那个,KMP算法里面 求模式串的next[]数组的方法看不懂; 有大神能详细解释一下不,看不懂哇)

2025-04-05 09:10:01 0

kmp算法next数组(那个,KMP算法里面 求模式串的next[]数组的方法看不懂; 有大神能详细解释一下不,看不懂哇)

本文目录

那个,KMP算法里面 求模式串的next[]数组的方法看不懂; 有大神能详细解释一下不,看不懂哇

对于next数组也就是子串的某个位置与自身的公共前缀的最后匹配位置。这样讲可能有点抽象,说白了就是子串以该位置为最末位,自己和自己匹配的最长公共前缀。而在进行next数组的第i个位置的求值时,该位置以前的所有next值已经求出,因此我们可以借助之前求出的next值来更新此刻next;}}

KMP算法中的next数组如何计算

next个字符的地方,这样就少了很多重复的无效的比较和移动。

给出字符串在KMP算法中的Next数组

逐个查找对称串。

只要循环遍历这个子串,分别看前1个字符,前2个字符,3个... i个 最后到15个。

第1个a无对称,所以对称程度0

前两个ag无对称,所以也是0

依次类推前面0-4都一样是0

最后一个是0~3都一样是0

前缀next数组的求解算法:

void SetPrefix(const char *Pattern, int prefix)

{

int len=CharLen(Pattern);//模式字符串长度。

prefix=0;

for(int i=1; i《len; i++)

{

int k=prefix;

//不断递归判断是否存在子对称,k=0说明不再有子对称,Pattern说明虽然对称,但是对称后面的值和当前的字符值不相等,所以继续递推

while( Pattern  &&  k!=0 )               

k=prefix;     //继续递归

if( Pattern)//找到了这个子对称,或者是直接继承了前面的对称性,这两种都在前面的基础上++

prefix=k+1;

else

prefix=0;       //如果遍历了所有子对称都无效,说明这个新字符不具有对称性,清0

}

}

扩展资料:

设主串(下文中我们称作T)为:a b a c a a b a c a b a c a b a a b b

模式串(下文中我们称作W)为:a b a c a b

用暴力算法匹配字符串过程中,我们会把T 跟 W 匹配,如果相同则匹配下一个字符,直到出现不相同的情况,此时会丢弃前面的匹配信息,然后把T 跟 W匹配,循环进行,直到主串结束,或者出现匹配成功的情况。这种丢弃前面的匹配信息的方法,极大地降低了匹配效率。

而在KMP算法中,对于每一个模式串我们会事先计算出模式串的内部匹配信息,在匹配失败时最大的移动模式串,以减少匹配次数。

参考资料来源:百度百科-kmp算法

kmp算法中的next到底是什么意思啊

  先看看next数据值的求解方法  位序 1 2 3 4 5 6 7 8  模式串 a b a a b c a c  next值 0 1 1 2  2 3  1 2  next数组的求解方法是:  1.第一位的next值为0  2.第二位的next值为1  后面求解每一位的next值时,根据前一位进行比较  3.第三位的next值:第二位的模式串为b ,对应的next值为1;将第二位的模式串b与第一位的模式串a进行比较,不相等;则第三位的next值为1  4.第四位的next值:第三位的模式串为a ,对应的next值为1;将第三位的模式串a与第一位的模式串a进行比较,相同,则第四位的next值得为2  5.第五位的next值:第四位的模式串为a,对应的next值为2;将第四位的模式串a与第二位的模式串b进行比较,不相等;第二位的b对应的next值为1,则将第四位的模式串a与第一位的模式串a进行比较,相同,则第五位的next的值为2  6.第六位的next值:第五位的模式串为b,对应的next值为2;将第五位的模式串b与第二位的模式中b进行比较,相同,则第六位的next值为3  7.第七位的next值:第六位的模式串为c,对应的next值为3;将第六位的模式串c与第三位的模式串a进行比较,不相等;第三位的a对应的next值为1,则将第六位的模式串c与第一位的模式串a进行比较,不相同,则第七位的next值为1  8.第八位的next值:第七位的模式串为a,对应的next值为1;将第七位的模式串a与第一位的模式串a进行比较,相同,则第八位的next值为2  以上这种分析方法,位序是从1开始的,如果位序从0开始,刚第一位的next值为-1,后面的方法则相同

已知一个模式串T=“aaaba“,则在KMP算法中,其next数组中的值是 (

abaabcac01122312前两个字母next序列分别为01,直接写上第三个“a“ 时,它前一个字母为b,从头开始字母为a, a!=b所以为1第四个“a“ 时,前字母为a,从头开始字母为a,a=a,所以值为1+1=2(相等时为串长加1)第五个“b“,前个字母为a,从头开始a,a=a,为2第六个“c“,前个字母为b,再往前是a,ab,从头开始ab串,ab=ab,因此值为2+1=3第七个字母为“a“,前个字母为c,与从头开始的第一个字母不相等,所以为1第八个为“c“,前个字母为a,与开始第一个字母相等,因此为2则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。

kmp算法next数组(那个,KMP算法里面 求模式串的next[]数组的方法看不懂; 有大神能详细解释一下不,看不懂哇)

本文编辑:admin
下一篇:没有内容了

更多文章:


unleashed是什么意思(Compilation-Unleashed是什么意思)

unleashed是什么意思(Compilation-Unleashed是什么意思)

本文目录Compilation-Unleashed是什么意思attack是什么意思Compilation-Unleashed是什么意思Compilation:Unleashed:解除有翻译为“无防拷”我觉得应该是这个游戏原为无法复制,现在破

2025年2月16日 13:40

guaranteed是什么意思(quality guaranteed是什么意思)

guaranteed是什么意思(quality guaranteed是什么意思)

本文目录quality guaranteed是什么意思guaranteed-entry是什么意思guaranteed annual income是什么意思啊guarantee是什么意思quality guarantee是什么意思qualit

2025年2月21日 18:50

平安银行官网(平安银行积分兑换官网)

平安银行官网(平安银行积分兑换官网)

本文目录平安银行积分兑换官网怎样登录中国平安官方网站如何申请平安银行个人网上银行平安银行 登陆ip平安银行积分兑换官网平安信用卡积分商城可以兑换礼品或票券、充值话费及油卡以及使用积分+现金进行购物等,您可以登录平安口袋银行APP-信用卡-我

2025年3月14日 00:10

CSS如何让一个按钮居中应该怎么做?如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果

CSS如何让一个按钮居中应该怎么做?如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果

本文目录CSS如何让一个按钮居中应该怎么做如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果CSS如何让一个按钮居中应该怎么做通过这样的Css样式就可以实现:《div style=“margin:0 auto;width:2

2025年3月23日 23:00

sly是什么牌子有什么简介吗?continuously是什么意思

sly是什么牌子有什么简介吗?continuously是什么意思

本文目录sly是什么牌子有什么简介吗continuously是什么意思sly怎么读Obviously怎么读sly一定是贬义吗sly是什么牌子有什么简介吗SLY,是英文狡黠、淘气、耍耍心眼的意思,其实寓意着“SLY”服装品牌的风格。SLY是热

2025年2月22日 23:40

buttock是什么意思(网络用语大猪蹄子是什么意思)

buttock是什么意思(网络用语大猪蹄子是什么意思)

本文目录网络用语大猪蹄子是什么意思Hip、ass、haunch、 buttock有什么区别,该怎样使用网络用语大猪蹄子是什么意思谢友邀我作答!恕美食坐家孤陋寡闻,我一直以为,大猪蹄子的意思就是大猪的蹄子这个意思。可就在今天,就在刚才,我一铁

2025年3月8日 13:10

glamorous什么意思(glmorous是什么意思)

glamorous什么意思(glmorous是什么意思)

本文目录glmorous是什么意思glam是什么意思glmorous是什么意思应该是glamorous sky吧!魅惑天空/迷人天空中岛美嘉受邀担任人气漫画“NANA”改编的同名电影女主角“大崎NANA”一角,也凭电影“NANA”的歌曲 G

2025年3月23日 01:10

carrot cake(请指点下Carrot cake的家常做法)

carrot cake(请指点下Carrot cake的家常做法)

本文目录请指点下Carrot cake的家常做法请指点下Carrot cake应该怎么做请指点下Carrot cake的家常做法食材:胡萝卜300克、核桃250克、蛋黄4个.、红糖200克、肉桂粉1 茶勺、淡朗姆酒30毫升、低粉60克、泡打

2025年2月19日 21:20

kubernetes(kubernetes工作方向 有前途吗)

kubernetes(kubernetes工作方向 有前途吗)

本文目录kubernetes工作方向 有前途吗kubernetes 什么意思Kubernetes为什么很重要如何学习kubernetes,学习kubernetes需要代码基础吗kubernetes工作方向 有前途吗Kubernetes在容器

2025年3月6日 11:30

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)

本文目录Eclipse打开xml文件报校验错误怎么解决myeclipse 打开后 spring配置文件applicationcontext.xml第一行有红叉叉,把鼠标放到红叉上,提示加载这个java web项目,修改浏览器访问地址tomc

2025年3月19日 18:50

cured是什么意思(网络热词cure)

cured是什么意思(网络热词cure)

本文目录网络热词curecure的用法和意思是什么及例句网络热词curecure 英An operation finally cured his shin injury手术最终治好了他胫部的伤。第三人称单数:cures 复数:cure

2025年3月9日 03:50

avenue怎么读(法语avenue为什么读e)

avenue怎么读(法语avenue为什么读e)

本文目录法语avenue为什么读eavenue怎么念法语avenue为什么读e第一个不是很明白~我是用法语学的法语~对于这些中文名字不太理解.第二个 avenue 和 pied 2个词也有读音规则啊.数字8~~为了好听所以会发音~法语中也有

2025年4月5日 07:20

redis可视化管理工具(redis可视化管理工具好不好)

redis可视化管理工具(redis可视化管理工具好不好)

本文目录redis可视化管理工具好不好memcached 有没有什么可视化的管理工具redis可视化管理工具好不好有序集合类型在某些方面和列表类型有些相似。(1)二者都是有序的。(2)二者都可以获得某一范围的元素。但是二者有着很大的区别,这

2025年3月25日 02:50

泛型是什么意思(啥叫泛型具体怎么用谁能给个详细点的答复)

泛型是什么意思(啥叫泛型具体怎么用谁能给个详细点的答复)

本文目录啥叫泛型具体怎么用谁能给个详细点的答复什么叫泛型什么是泛型(C#概念)泛型是什么什么是泛型他有什么优点什么叫泛型有什么作用什么是泛型说的直白点什么是泛型啥叫泛型具体怎么用谁能给个详细点的答复英文是Generic,意思是通用的,你知道

2025年4月1日 17:30

html背景图片居中(用html添加背景图片时,怎么让它不重复并且居中)

html背景图片居中(用html添加背景图片时,怎么让它不重复并且居中)

本文目录用html添加背景图片时,怎么让它不重复并且居中怎么用HTML把图片设置在背景图片居中求代码用html添加背景图片时.怎么让它不重复.并且居中.在网页设计中怎么让背景图片水平居中用html添加背景图片时,怎么让它不重复并且居中在你所

2025年2月23日 23:00

查看僵尸进程(linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程)

查看僵尸进程(linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程)

本文目录linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程如何察看僵尸进程 zombie怎样用top命令查看所有进程unix怎么看一个进程是不是僵死的如何用linux组合指令查找某个进程并

2025年3月23日 22:00

免费制作h5页面的软件(比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用)

免费制作h5页面的软件(比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用)

本文目录比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用h5页面都是用什么软件制作的比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用在制作H5之前要明确自己要建什么类型的页面再选择合适的工具,常用的H5类型如下:一、手机游戏类型

2025年2月27日 18:00

everybody中文谐音字(Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来)

everybody中文谐音字(Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来)

本文目录Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来麻烦把这段英语翻译“汉语谐音”Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来Every

2025年2月8日 17:40

windows phone系统还能用吗(windows phone系统现在怎么样)

windows phone系统还能用吗(windows phone系统现在怎么样)

本文目录windows phone系统现在怎么样Windows phone系统的手机好用吗Windows Phone 还能咸鱼翻身吗Windows Phone10和Windows10区别手机版不能用微信电脑版可以用微信windowsphon

2025年3月16日 13:30

cl exe(c语言中执行cl.exe时出错)

cl exe(c语言中执行cl.exe时出错)

本文目录c语言中执行cl.exe时出错VC2010中出现“error MSB6006: “CL.exe”已退出,代码为 2”如何解决c语言初学者求救!执行 cl.exe 时出错.是什么意思C语言程序编译老是CL.exe错误 怎么回事为什么老

2025年2月28日 17:00

近期文章

journal of alloys and compounds(Journal of Alloys and Compounds投稿求助)
2025-04-05 08:40:02
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索