关注
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次。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的求职进度条 #
984355次浏览 6541人参与
# 携程笔试 #
153489次浏览 888人参与
# 厦门银行科技岗值不值得投 #
18936次浏览 422人参与
# 米哈游工作体验 #
29875次浏览 144人参与
# 拼多多集团-PDD笔试 #
64015次浏览 485人参与
# 哪些公司一直卡在简历筛选 #
105617次浏览 360人参与
# 中国电信笔试 #
40751次浏览 399人参与
# 拿到offer之后,可以做些什么 #
104714次浏览 511人参与
# 入职第一天,你准备什么时候下班 #
118206次浏览 516人参与
# Agent面试会问什么? #
38197次浏览 1418人参与
# 一人分享一个skill #
9883次浏览 243人参与
# 说说你知道的学历厂 #
401435次浏览 1433人参与
# 春招至今,你收到几个面试了? #
98887次浏览 1243人参与
# 选实习,你更看重哪方面? #
76778次浏览 505人参与
# 拼多多工作体验 #
55374次浏览 389人参与
# 记录实习开销 #
214519次浏览 1747人参与
# 你觉得专业和学校哪个对薪资影响最大 #
104532次浏览 620人参与
# 给工作过的公司写一条大众点评,你会怎么写? #
12370次浏览 143人参与
# TCL求职进展汇总 #
152315次浏览 665人参与
# 通信/硬件的薪资开多少,才值得去? #
76750次浏览 407人参与
# 面试体验最好和最差的公司 #
25473次浏览 170人参与
查看12道真题和解析