关注
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次。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
7529次浏览 117人参与
# 牛友的春节生活 #
4245次浏览 113人参与
# 春节前,你还在投简历吗? #
10457次浏览 133人参与
# 从夯到拉,锐评职场mentor #
3013次浏览 55人参与
# 牛客AI体验站 #
14106次浏览 262人参与
# 实习到现在,你最困惑的一个问题 #
3124次浏览 97人参与
# 春节提前走,你用什么理由请假? #
6846次浏览 169人参与
# 备战春招/暑实,现在应该做什么? #
2905次浏览 102人参与
# 距离春招还有一个月,你现在是什么开局? #
4591次浏览 94人参与
# 聊聊Agent开发 #
19976次浏览 524人参与
# 暑期实习什么时候投? #
5266次浏览 130人参与
# 推荐一个值得做的AI项目 #
5489次浏览 154人参与
# 听劝,这个简历怎么改 #
380697次浏览 1826人参与
# 机械人的秋招小目标 #
28385次浏览 239人参与
# 我的AI电子员工 #
27692次浏览 186人参与
# 腾讯工作体验 #
568392次浏览 3713人参与
# 参加完秋招的机械人,还参加春招吗? #
108327次浏览 704人参与
# 实习的内耗时刻 #
221566次浏览 1643人参与
# 互联网公司评价 #
488598次浏览 4119人参与
# bilibili求职进展汇总 #
180925次浏览 1074人参与