关注
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次。
查看原帖
点赞 评论
相关推荐
11-04 23:14
东南大学成贤学院 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享
11-05 00:51
铜陵学院 算法工程师 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
247929次浏览 2012人参与
# 学历or实习经历,哪个更重要 #
41111次浏览 300人参与
# 北方华创开奖 #
22803次浏览 259人参与
# 地方国企笔面经互助 #
2544次浏览 6人参与
# 你最想要的公司福利是? #
39996次浏览 126人参与
# 选完offer后,你后悔学本专业吗 #
10472次浏览 75人参与
# 面试题刺客退退退 #
137176次浏览 2092人参与
# 国企/银行/研究所公司爆料 #
89732次浏览 412人参与
# 应届生被毁约被毁意向了怎么办 #
27147次浏览 238人参与
# 一觉醒来,我觉醒了超级打工人系统 #
2902次浏览 35人参与
# 机械应届生薪资要多少才合适? #
12396次浏览 60人参与
# 查收我的offer竞争力报告 #
16808次浏览 228人参与
# 校招入职后的感受 #
156958次浏览 1961人参与
# 你觉得第一学历对求职有影响吗? #
14890次浏览 121人参与
# 没有实习经历,还有机会进大厂吗 #
805108次浏览 13814人参与
# 我的工作日记 #
21196次浏览 270人参与
# 不给转正的实习,你还去吗 #
1517043次浏览 16968人参与
# 寒假躺平还是提前实习 #
58438次浏览 438人参与
# 总结:哪家公司面试体验感最差 #
25760次浏览 129人参与
# 秋招OC许愿 #
226651次浏览 1872人参与
# 如何写一份好简历 #
602191次浏览 8442人参与