学习记录17

惭愧,折腾了一天的KMP,写了个模板题,这题写详细些好了。
题目如下:

首先我们要知道KMP是怎么用的,是干些什么的。KMP主要适用于字符串的匹配,就是上面的这题,当我们需要在两个字符串之间进行判断是否另一方在主串中出现时,一旦字符的长度大了起来,使用朴素算法的话就会显得时间复杂度过大,于是在前人的研究下,我们得到了如今的KMP。
因为KMP是利用字符串的对称性来节省时间复杂度的,我们将子串以相同的前后缀个数来编出另一个整型数组,此前后缀个数也是字符串中非重复字符的下标位置。借由这个数组我们可以节省不必要的匹配,因为当前缀已被匹配为一致,而之后的某一位匹配不成功,则不需要按朴素算法的样式接着一位一位的接着匹配,我们可以直接将下标转移至最佳位置,也就是非相同前后缀的“中间部分”,而主串的下标一直持续往后走,因为我们已经在此下标对于子串进行过匹配。
接着代码看吧.
#include
#include
#include
#include
using na

学习记录17最先出现在Python成神之路

版权声明:
作者:admin
链接:https://www.techfm.club/p/16950.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>