关注
KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法。在KMP算法中,当发生不匹配时,算***利用已经匹配的信息,避免从头开始匹配。
对于给定的模式串“aaabab”和主串“aaabbaabaaababb”,我们可以按照以下步骤进行匹配:
1. 首先,计算模式串的next数组(也称为部分匹配表),它表示在模式串的前缀中,有多大长度的相同前缀和后缀。对于模式串“aaabab”,next数组如下:
- a -> 0
- aa -> 0
- aab -> 0
- aaba -> 1
- aabab -> 2
2. 接下来,使用next数组进行匹配。我们从主串的第一个字符开始,逐个与模式串进行匹配。
匹配过程如下:
- 主串:aaabbaabaaababb
- 模式串:aaabab
- 当前匹配位置:第1个字符
匹配过程:
- a (主串) == a (模式串) → 继续匹配
- a (主串) == a (模式串) → 继续匹配
- b (主串) == b (模式串) → 继续匹配
- b (主串) != a (模式串) → 回溯到模式串的next数组指示的位置,即从模式串的第2个字符开始重新匹配
- a (主串) == a (模式串) → 继续匹配
- a (主串) == a (模式串) → 继续匹配
- b (主串) == b (模式串) → 继续匹配
- a (主串) == a (模式串) → 继续匹配
- b (主串) == b (模式串) → 继续匹配
- a (主串) == a (模式串) → 匹配成功
在这个过程中,总共进行了11次比较。
因此,匹配成功时比较次数为11次。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
06-27 17:50
深圳大学 供应链其他 点赞 评论 收藏
分享
05-11 11:48
河南大学 Java 点赞 评论 收藏
分享
05-06 08:51
华北理工大学 后端 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届校招投递进展 #
26798次浏览 215人参与
# 烟草笔面经互助 #
16726次浏览 180人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
7355次浏览 96人参与
# 为了找工作你花了哪些钱? #
26674次浏览 256人参与
# 你今年的保底offer是哪家 #
117989次浏览 536人参与
# 你觉得技术面多长时间合理? #
96379次浏览 707人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61172次浏览 488人参与
# kpi面有什么特征 #
51937次浏览 402人参与
# 牛友们,签完三方你在忙什么? #
98065次浏览 852人参与
# 听到哪句话就代表面试稳了or挂了? #
170629次浏览 1367人参与
# 如何缓解入职前的焦虑 #
192148次浏览 1338人参与
# 打工人的精神状态 #
49131次浏览 856人参与
# 查收我的offer竞争力报告 #
189396次浏览 1265人参与
# 通信/硬件公司求职体验 #
121480次浏览 860人参与
# 选完offer后,你后悔学本专业吗 #
46205次浏览 234人参与
# 你秋招想去哪些公司 #
21396次浏览 796人参与
# 你后悔选择现在的专业吗 #
83741次浏览 676人参与
# 机械人春招想让哪家公司来捞你? #
344359次浏览 3078人参与
# 外包能不能当跳板? #
34179次浏览 214人参与
# 牛友的志愿填报指南 #
26814次浏览 167人参与
# 地方国企笔面经互助 #
31052次浏览 105人参与