- 基本介绍
- 模板题目
- 代码实现
基本介绍
KMP(Knuth-Morris-Pratt算法)是最常用的字符串匹配算法之一。它以三个发明者命名。
KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是用一个next数组,记录模式串的局部匹配信息。所以这个next数组也就是算法的核心,网上有很多博客都在写,但是个人感觉都不好理解…
这个算法的模板是从Zheng.HT那里拿(偷)来的 他的博客里面链接了两个大佬的博客 可以学习
Zheng.HT
再附一个歪果仁写的博客 可以在线翻译一句一句看 写的很通俗 虽然没有代码 但可以快速理解next的实现
Jake.Boxer
模板题目
题目描述
如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。
为了减少骗分的情况,接下来还要输出子串的前缀数组next。如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。
输入输出格式
输入格式: