关注
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次。
查看原帖
点赞 评论
相关推荐
03-10 18:23
广东工业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你感受到金三银四了嘛? #
71549次浏览 613人参与
# 2025秋招体验点评 #
99702次浏览 751人参与
# 虽然0面试,但今天___,夸夸自己 #
8954次浏览 172人参与
# 美团笔试 #
696823次浏览 4628人参与
# 春招 / 实习投递,你最焦虑的一件事 #
53388次浏览 1033人参与
# 你上一次加班是什么时候? #
137158次浏览 755人参与
# AI岗位暴涨12倍,你会转AI赛道吗? #
4862次浏览 93人参与
# 米哈游笔试 #
552436次浏览 1088人参与
# 今天你投了哪些公司? #
147146次浏览 2636人参与
# vivo笔试 #
13053次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
18658次浏览 254人参与
# 27届实习投递记录 #
882次浏览 23人参与
# 腾讯音乐求职进展汇总 #
157702次浏览 1070人参与
# 字节7000实习来了,你投了吗? #
4389次浏览 20人参与
# AI项目实战 #
6637次浏览 316人参与
# 刚工作的你,踩过哪些坑? #
6160次浏览 137人参与
# 秋招报数:你投了多少家公司? #
156927次浏览 957人参与
# 找工作,你都让AI帮你做什么? #
6875次浏览 217人参与
# 美团秋招笔试 #
194720次浏览 1066人参与
# 实习学不到东西正常吗? #
7713次浏览 149人参与
查看15道真题和解析