网易首页 > 网易号 > 正文 申请入驻

【未来虫教育】字符串匹配之KMP算法与BF算法

0
分享至

(一) 字符串匹配,从 主串 中匹配目标串,如果在主串中匹配到,就返回与目标串相匹配的对应主串的第一个字符·
(二)
(1) BF算法, 即暴力(Brute Force)算法 ,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
缺点: 时间复杂度较大0(mn)(最坏的情况下)( m为主串长度,n为目标串长度 )
BF算法演示过程:




(2) KMP算法: 是一种 改进的字符串匹配算法, 由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是 利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配 的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息 。 K MP算法的
时间复杂度
O(m+n)
为什么要求next数组,next数组指的是什么?
KMP的next数组简单来说,假设有两个字符串,一个是待匹配的字符串S1,一个是要查找的关键字S2。现在我们要在S1中去查找是否包含S2,用 “i” 来表示S1遍历到了哪个字符, KMP就是保证 i 永远不回退,只回退 j 来使得匹配效率有所提升。它用的方法就是利用 strKey在失配的j为之前的成功匹配的子串的特征来寻找j应该回退的位置 。
前缀和后缀
"前缀"和"后缀"。 "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。




nextval是为了弥补next缺陷所产生的
实例如下:
主串为“aaabaaaab”、模式串为“aaaab”那么,比较的时候就会发生一些浪费的情况:比较到主串以及模式串的第四位时,发现其值并不相等,据我们观察,我们可以直接从主串的第五位开始与模式串进行比较,而事实上,却进行了几次多余的比较。使用nextval可以去除那些不必要的比较次数。
KMP算法要解决的问题就是 在字符串(也叫主串)中的模式(pattern)定位问题。 说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。




具体解释:
首先,对于这个问题有一个很单纯的想法:从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位。这有什么难的?
我们可以这样初始化:
之后我们只需要比较i指针指向的字符和j指针指向的字符是否一致。如果一致就都向后移动,如果不一致,如下图:
A和E不相等,那就把i指针移回第1位(假设下标从0开始),j移动到模式串的第0位,然后又重新开始这个步骤:

#include

#include

#include

int BFindex(char S[],char T[],int pos)//BF算法匹配字符串{int i=pos;int j=1;int length1=strlen(S);int length2=strlen(T);while((i<=length1)&&(j<=length2))//两个字符串均为比较到串尾(只有有一个到串尾就跳出循环){ if(S[i]==T[j-1]) { i++;j++; } else { i=i-j+2; j=1; }}if(j>length2){ return i-length2+1;}else{return 0;printf("匹配失败!");}}int Index_KMP(char S[],char T[],int next[],int pos)//字符串匹配{int i=pos;int j=1;int length1=strlen(S);int length2=strlen(T);while(i<=length1&&j<=length2) //两个字符串均为比较到串尾(只有有一个到串尾就跳出循环){ if(j==0||S[i]==T[j-1]){++i;++j;} //匹配进行中 else{ j=next[j];} //移动字符串}if(j>length2)return i-length2+1;else{ return 0;printf("匹配失败!");}}void get_next(char T[],int next[]) //获取next的值{int i=1;next[0]=0;int j=0;int length3;length3=strlen(T);while(i

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
炮轰紫石英号,解放军伤亡远远高于英军,为何还能说是一场胜利

炮轰紫石英号,解放军伤亡远远高于英军,为何还能说是一场胜利

历史龙元阁
2024-11-24 22:59:53
邓亚萍超专业点评女单决赛:陈幸同可惜,王曼昱成功突破了自我!

邓亚萍超专业点评女单决赛:陈幸同可惜,王曼昱成功突破了自我!

乒谈
2024-11-24 17:56:12
越南如此操作为哪般?评论区炸锅…

越南如此操作为哪般?评论区炸锅…

慧翔百科
2024-11-24 13:27:26
任天堂闹钟上架百亿补贴:1698元!

任天堂闹钟上架百亿补贴:1698元!

游民星空
2024-11-24 12:13:42
歼-35飞了一圈,机身隐身涂料脱落,露出绿色底漆,还能隐身么?

歼-35飞了一圈,机身隐身涂料脱落,露出绿色底漆,还能隐身么?

史智文道
2024-11-23 08:30:07
看完特朗普的一日三餐,再看看普京的,网友:没有对比就没有伤害

看完特朗普的一日三餐,再看看普京的,网友:没有对比就没有伤害

猫小狸同学
2024-11-13 15:20:03
叶珂闺蜜宣布断交,暗示黄晓明将跟叶珂分手,处理好要吃饭庆祝

叶珂闺蜜宣布断交,暗示黄晓明将跟叶珂分手,处理好要吃饭庆祝

娱圈小愚
2024-11-25 15:11:31
11连败!摆烂+遭雪藏,瓦兰心灰意冷,怒撕毛巾!湖人迎交易良机

11连败!摆烂+遭雪藏,瓦兰心灰意冷,怒撕毛巾!湖人迎交易良机

老王大话体育
2024-11-25 16:33:47
独家|凯德集团计划18亿元出售上海浦发大厦70%面积,较买入价折价逾三成

独家|凯德集团计划18亿元出售上海浦发大厦70%面积,较买入价折价逾三成

澎湃新闻
2024-11-25 13:46:29
中国刚答应免签请求,日本态度就变了,在防长会上对中方定下规矩

中国刚答应免签请求,日本态度就变了,在防长会上对中方定下规矩

圈里的甜橙子
2024-11-25 15:58:49
吴柳芳确实很美,身材也很好!荣誉也很耀眼:15枚金牌,16枚银牌

吴柳芳确实很美,身材也很好!荣誉也很耀眼:15枚金牌,16枚银牌

娱乐的小灶
2024-11-25 10:03:07
中巴反恐取得战果,7名恐怖分子遭击毙,巴基斯坦对华作出新承诺

中巴反恐取得战果,7名恐怖分子遭击毙,巴基斯坦对华作出新承诺

影孖看世界
2024-11-25 15:53:40
木村拓哉,年轻的时候被封为男神,红遍全亚洲,老了后变成凶老头

木村拓哉,年轻的时候被封为男神,红遍全亚洲,老了后变成凶老头

人情皆文史
2024-10-25 00:01:12
23岁爆火,退圈后结婚,遭丈夫家暴、敲诈,离婚11年,她还好么?

23岁爆火,退圈后结婚,遭丈夫家暴、敲诈,离婚11年,她还好么?

柴叔带你看电影
2024-11-24 16:37:19
崔永熙爆发!命中率100%!场均得分比肩布朗尼

崔永熙爆发!命中率100%!场均得分比肩布朗尼

篮球教学论坛
2024-11-25 07:13:47
A股:明天,11月26日,两个信号落地!

A股:明天,11月26日,两个信号落地!

兵哥闲聊
2024-11-25 15:06:57
“喝酒三巨头”现状:不到一年全走了,临终前还想着喝完4瓶白酒

“喝酒三巨头”现状:不到一年全走了,临终前还想着喝完4瓶白酒

火之文
2024-11-20 17:16:38
这大概是章泽天最真实的照片了,抛弃一切身份,此时她只是位母亲

这大概是章泽天最真实的照片了,抛弃一切身份,此时她只是位母亲

人情皆文史
2024-10-13 00:04:08
德云社“6员大蘸酱”:1.烧饼33岁,身高186,黑龙江哈尔滨人!

德云社“6员大蘸酱”:1.烧饼33岁,身高186,黑龙江哈尔滨人!

娱乐的小灶
2024-11-25 13:19:08
外籍院士刘科:纯电车拖个600公斤电池,纯粹浪费能源!

外籍院士刘科:纯电车拖个600公斤电池,纯粹浪费能源!

老蒋谈策划
2024-11-25 09:38:16
2024-11-25 17:15:00
原画在线课堂vv
原画在线课堂vv
一家有温度的原画教育机构
1150文章数 1关注度
往期回顾 全部

科技要闻

蔚来李斌内部信:2026年盈利不容有失

头条要闻

哈尔滨冰雪大世界糖葫芦点位100万起拍 去年40万成交

头条要闻

哈尔滨冰雪大世界糖葫芦点位100万起拍 去年40万成交

体育要闻

国乒的起伏与夺冠,有些东西已经变了

娱乐要闻

小S为二女儿庆祝17岁生日

财经要闻

未来3-6个月创新高?哪些赛道有潜力?

汽车要闻

特斯拉限时优惠:Model Y仅23.99万起 还能5年0息

态度原创

健康
时尚
旅游
本地
家居

花18万治疗阿尔茨海默病,值不值?

今年冬天,不能没有高筒靴!

旅游要闻

单方面免签名单再拉长,入境游市场持续复苏

本地新闻

城市24小时|领跑万亿城市,武汉“开挂”了?

家居要闻

素韵留白 极简空间的空灵之境

无障碍浏览 进入关怀版