题目回顾
来自《王道2027数据结构考研复习指导》课后习题 4.2.4
KMP算法使用修正后的 next 数组(即 nextval)进行模式匹配。
已知模式串:
S = 'aabaab'
问题:
当主串某个字符与 S 的某个字符失配时,
S 向右滑动的最长距离是多少?
学习背景说明
在哔站的课程中,这几章的课后习题通常是:
前面的题由呼呼老师讲解最后一题由咸鱼老师讲解
而这道题正好是由咸鱼老师讲解的。
由于两位老师的讲解思路略有不同:
一种偏向直观推导(呼呼老师)一种偏向公式总结(咸鱼老师)
这就导致不少同学在切换思路时出现理解断层,感觉“好像听懂了,又好像没完全懂”。
下面我将按照呼呼老师的思路,完整还原这道题的推导过程。
为什么这题容易出错
这道题看似简单,但实际有两个关键难点:
next 和 nextval 容易混淆不清楚滑动距离的计算方式
很多同学会算 nextval,但不知道如何求“滑动距离”,这是失分的主要原因。
手写笔记:
第一步:按步骤求 nextval 数组(核心过程)
这一部分是很多同学最容易“似懂非懂”的地方,下面按照一种更直观的理解方式来推导。
首先记住改进后的 KMP 算法特点:程序能够记住扫描过的所有字符
。
KMP算法中nextval与滑动距离如何本质为?
摘要:题目回顾 来自《王道2027数据结构考研复习指导》课后习题 4.2.4 KMP算法使用修正后的 next 数组(即 nextval)进行模式匹配。 已知模式串: S = 'aabaab' 问题
