关注
next函数是KMP算法中的核心部分,用于记录模式串中每个位置的最长相等前缀后缀长度。对于模式串t="abcaababc",我们可以这样计算next函数值:
1. t[0]='a',最长相等前缀后缀长度为0,next[0]=0;
2. t[1]='b',最长相等前缀后缀长度为0,next[1]=0;
3. t[2]='c',最长相等前缀后缀长度为0,next[2]=0;
4. t[3]='a',最长相等前缀后缀长度为1,next[3]=1;
5. t[4]='a',最长相等前缀后缀长度为2,next[4]=2;
6. t[5]='b',最长相等前缀后缀长度为0,next[5]=0;
7. t[6]='c',最长相等前缀后缀长度为0,next[6]=0;
8. t[7]='a',最长相等前缀后缀长度为1,next[7]=1。
next函数值数组为:***
匹配过程示意图如下:
1. 主串s="aabcbabcaabcaababc",模式串t="abcaababc";
2. 初始化i=0(主串位置),j=0(模式串位置);
3. 比较s[i]和t[j],如果相等,则i++,j++,继续比较;
4. 如果不相等,则j=next[j],即j回退到next[j]的位置,继续比较;
5. 如果j回退到-1,说明匹配失败,i++,重新开始匹配;
6. 如果j回退到0,说明匹配成功,返回匹配成功的位置i-j。
根据这个示意图,你可以看到,当主串s和模式串t不匹配时,我们可以使用next函数值来快速回退到合适的位置,从而提高匹配效率。
查看原帖
1 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
02-25 12:06
天津大学 嵌入式硬件工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如何一边实习一边找下家? #
9075次浏览 75人参与
# 重来一次,你会对开始求职的自己说 #
37814次浏览 397人参与
# 春招/暑实第一面是哪家? #
9989次浏览 136人参与
# 你的mentor是什么样的人? #
56349次浏览 766人参与
# 跟HR说什么能被秒回? #
4088次浏览 78人参与
# 你认为工作的意义是什么 #
264685次浏览 1521人参与
# 面试官最爱问的 AI 问题是...... #
7029次浏览 250人参与
# 你今年的保底offer是哪家 #
175959次浏览 730人参与
# 哪些瞬间让你真切感受到了工作的乐趣 #
26854次浏览 110人参与
# 你收到了哪些公司的笔试? #
9115次浏览 50人参与
# 你的嫡系AI是哪个? #
1724次浏览 48人参与
# 现在入门AI应该走哪些方向? #
1625次浏览 39人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
951次浏览 39人参与
# 你现在的工作,是“成长”还是“消耗”? #
5579次浏览 87人参与
# 为什么国企只招应届生 #
244063次浏览 1306人参与
# 烟草笔面经互助 #
27775次浏览 202人参与
# 你怎么评价今年的春招? #
155697次浏览 1415人参与
# 互联网回暖,腾讯要招5000+人! #
296408次浏览 4929人参与
# 27届实习投递记录 #
2529次浏览 55人参与
# 运营/市场营销人的秋招现状 #
31688次浏览 213人参与
