「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」
KMP
- KMP算法的时间复杂度是O(m+n),主要优点是:主串不回溯
一.示例图
#二.经典例题
剖析上面的例题
1 | arduino复制代码p作为模式串'aabaac' s作为主串'aabaabaabaac' |
1. 首先我们先求解next数组
2. 主串一直往前走,模式串进行比较
1 | css复制代码① |
上面的例题的方法二
例1图
1 | css复制代码1. 首先我们先将模式串的前后缀的部分匹配值求出,如'例1图' |
彩蛋
- 到了这里,大家重新看例1图,我们要求的
next
数组其实就是将例1图中的 - 匹配值
整体向右一位
,是不是很神奇!
本文转载自: 掘金