分享好友 最新动态首页 最新动态分类 切换频道
KMP算法快速理解
2024-12-26 21:42

next数组的值其实就是【当前位置之前的字符串】的最长公共子缀长度
————————————————————————————
举个例子
父串ABAABACA
当我们在计算C字符对应的next数组值时,我们其实就是要计算ABAABA这个字符串的最长公共子缀。
ABAABA的前缀有A、AB、ABA、ABAA、ABAAB
                  后缀有A、BA、ABA、AABA、BAABA
最长的公共子缀是ABA,长度为3,所以C这个位置的next数组值就是3。
由于第一个字符之前没有任何字符,所以我们规定第一个字符处的next数组值为-1;第二个字符之前只有1个字符,但是我们规定子缀是不能包含父串本身的,所以最长公共子缀为0;其他位置的按照标准计算即可。
根据定义,父串ABAABACA的next数组值为

i01234567str[i]ABAABACAnext[i]-10011230

KMP算法解决的问题是在父串中查找子串是否存在。
————————————————————————————
我们举例来说明KMP的工作过程
父串txt=BBCABCDABEABCDABCDABDE
子串str=ABCDABD
(1)求出子串str的next数组

i0123456str[i]ABCDABDnext[i]-1000012

所以KMP的基本工作原理就是

  1. 若子串、父串相等,则同时往后移动
  2. 若子串、父串不等,则子串移动到next[i]这个位置
  3. 若i=-1时子串、父串同时往后移动

next数组的原理上面已经讲了,现在说说怎么写next数组的求解代码。
首先能想到的一个暴力方法是,每一位在求解时,都把它之前的子串的前后子缀由长到短逐渐比较。
————————————————————————————
比如AAABBADA,我们在求解D所对应的next数组值时,将前面的子串AAABBA提出来

  1. 先比较AAABB和AABBA
  2. 不等,则比较AAAB和ABBA
  3. 不等,则比较AAA和BBA
  4. 不等,则比较AA和BA
  5. 不等,则比较A和A
  6. 发现等,所以next数组值是1

写成代码就是

 
 

有了求next数组的代码,KMP的代码就简单多了,我们直接按照上面的标准来写
所以KMP的基本工作原理就是

  1. 若子串、父串相等,则同时往后移动
  2. 若子串、父串不等,则子串移动到next[i]这个位置
  3. 若i=-1时子串、父串同时往后移动
最新文章
社交媒体营销策略:精准定位吸引,引爆网站用户增长
AI图片创意,仅供参考  在当今数字化的时代,社交媒体已成为品牌宣传、产品推广和吸引用户关注的重要渠道。一个成功的社交媒体营销策略不仅可以提高品牌知名度,还能增加用户参与度,提升销售业绩。那么,如何制定一个有效的社交媒体营销
企业快捷跨区县迁移 由13天缩短为3天
办理环节由8个压减为1个,申请材料由12份减少为5份,跑动次数从9次压减为全程网办“不用跑”,办理时限由13天缩短为3天。昨天,市市场监管局举行新闻发布会,就我市深化企业迁移登记“高效办成一件事”改革取得的成效,向社会通报。目前,
酣畅淋漓的AI绘画体验:一键生成超级美女写真!
在主页上找到“AI绘画”或“生成美女写真”的版块,点击进入。步骤3:上传基图(可选) 如果你有自己喜欢的基图,可以选择上传。如果没有,直接在下面的提示框输入你想要生成的描述即可。步骤4:设定风格与参数 在生成选项中,你可以选择想
百度季度财报设计_季度财报设计教程
摘要:百度季度财报设计,季度财报设计教程,新片场素材小编安文思百度季度财报设计,季度财报设计教程相关内容整理,如果您对百度季度财报设计,季度财报设计教程感兴趣欢迎访问免费阅读。百度季度财报设计,季度财报设计教程一、百度季度财报
古人的智慧,最直观的都江堰水利工程原理讲解
古诗有云:岷江遥从天际来,神功凿破古离堆。恩波浩渺连三楚,惠泽膏流润九垓。劈斧岩前飞瀑雨,伏龙潭底响轻雷。筑堤不敢辞劳苦,竹石经营取次裁。说的正是都江堰水利工程。都江堰水利工程坐落在成都平原西部的岷江上,始建于秦昭王末年(
骗人的!BUKE(APP)是诈骗软件,说我操作失误数据乱了要充钱修复漏洞才给提现怎么办
〖→被骗请点击进入帮助平台提现追款〗〖→被骗请点击进入帮助平台提现追款〗希望阅读此文的读者能够及时采取措施以减少损失;请及时与团队联系提供解决方案(文章上方点击添加技术员咨询快速追回)若想追回损失资产,务必仔细阅读以下内容
骁龙855深度性能测试,前瞻解读2019年手机性能(对比麒麟980、苹果A12)
上一篇文章跟大家详细地聊下,目前最火的几款。还没看过的小伙伴们推荐看一看:很多读者在评论跟我提起:为什么不加上骁龙855呢?其实原因也很简单:骁龙855的机型还没上市,最快也要等到2月份。实在是巧妇难为无米之炊呀!还好,在新机正
高、低两端细分市场增长迅速,市场期待“以旧换新”政策持续
来源:@华夏时报微博随着2024年步入尾声,中国汽车市场依然保持着强劲的增长态势。据商务部最新数据显示,截至11月18日,全国汽车以旧换新补贴申请总量突破400万份,其中报废更新和置换更新补贴申请各突破200万份。得益于政府推出的汽车以
打造热门全攻略,搭建与推广实战指南
本攻略全面解析搭建与推广策略,涵盖、设计、SEO优化、内容营销等多方面技巧,助你轻松打造热门,提升影响力。搭建推广在化浪潮席卷全球的今天,构建一个优秀的已成为企业及个人展示自我、拓展业务的关键,搭建完成后,如何有效地推广,使
维吉尼亚密码加密/解密在线工具
维吉尼亚密码加密/解密在线工具,工具链接:http://www.atoolbox.net/Tool.php?Id=856 维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26
相关文章
推荐文章
发表评论
0评