关注
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次。
查看原帖
点赞 评论
相关推荐
查看15道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
7710次浏览 123人参与
# 实习到现在,你最困惑的一个问题 #
3204次浏览 98人参与
# 春节前,你还在投简历吗? #
10694次浏览 133人参与
# 春节提前走,你用什么理由请假? #
7021次浏览 172人参与
# 牛客AI体验站 #
14149次浏览 262人参与
# 牛友的春节生活 #
4394次浏览 118人参与
# 从夯到拉,锐评职场mentor #
3130次浏览 55人参与
# 备战春招/暑实,现在应该做什么? #
3014次浏览 103人参与
# 聊聊Agent开发 #
20352次浏览 532人参与
# 距离春招还有一个月,你现在是什么开局? #
4771次浏览 96人参与
# 暑期实习什么时候投? #
5424次浏览 133人参与
# 推荐一个值得做的AI项目 #
5601次浏览 156人参与
# 用一句话形容你的团队氛围 #
38809次浏览 284人参与
# 总结:offer选择,我是怎么选的 #
258599次浏览 1508人参与
# 腾讯工作体验 #
568504次浏览 3714人参与
# 我的AI电子员工 #
27736次浏览 186人参与
# 实习想申请秋招offer,能不能argue薪资 #
218842次浏览 1171人参与
# 字节跳动工作体验 #
705746次浏览 6306人参与
# 参加完秋招的机械人,还参加春招吗? #
108350次浏览 704人参与
# bilibili求职进展汇总 #
180932次浏览 1074人参与
正浩创新EcoFlow公司福利 742人发布