关注
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次。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
74308次浏览 594人参与
# 你是怎么和mt相处的? #
102093次浏览 497人参与
# 华泰星战营,提前锁定校招offer #
13847次浏览 390人参与
# 打工人的工作餐日常 #
96154次浏览 551人参与
# 拼多多集团-PDD笔试 #
87056次浏览 594人参与
# 网易游戏雷火笔试 #
11610次浏览 108人参与
# 26届秋招投递记录 #
123539次浏览 683人参与
# 招银网络科技(深圳)有限公司成都分公司笔试 #
5176次浏览 21人参与
# 毕业论文怎么查AI率 #
85453次浏览 1963人参与
# 网易笔试 #
171708次浏览 812人参与
# 简历上如何体现你的“AI”能力? #
17753次浏览 383人参与
# 找不到大厂实习可以去小厂吗? #
23518次浏览 279人参与
# 你总挂在第__面? #
12713次浏览 151人参与
# 哪些AI项目值得做? #
27698次浏览 663人参与
# 如何准备秋招 #
81908次浏览 871人参与
# 0offer互助地 #
770305次浏览 4727人参与
# 实习时最怕听到的一句话 #
24536次浏览 226人参与
# 多益网络工作体验 #
70149次浏览 312人参与
# 没有面试的日子里,你在做什么 #
15221次浏览 389人参与
# 秋招被挂春招仍然能投的公司 #
31811次浏览 241人参与
# 秋招开始捡漏了吗 #
244606次浏览 1058人参与
查看10道真题和解析