书生来自秦朝南海郡,是一秃头学子。
取经之路漫漫,沉心学习方见始终。
前言
数据结构里面有个KMP算法,法苏ovo是助教,他就有心做了个文章。这篇文章整体来说,是很贴心的,但是,看不懂也没有关系。
俺也没大看懂XD
如果这篇看不懂,可以看这篇,讲的挺好的:https://www.cnblogs.com/zzuuoo666/p/9028287.html
众所周知,KMP这玩意挺难理解的,这里就介绍一下KMP嘛~
一、串匹配简介及KMP引入
1.串匹配
串匹配问题,就是给你一个很长的字符串P,然后给你一个目标字符串Q,现在让你在字符串P中找到字符串Q出现的位置。
2.暴力法串匹配
最简单粗暴的就是使用两个下标i,j分别指向两个字符串P和Q,一开始都从第一个字符开始逐个比较,如果相同,则同时后移一位进行下一个字符的比较,如果遇到一个不相同的字符,则将Q的下标j置零,也就是从头开始比较,而P的下标则重置到开始比较时的下一个位置。
这里怕机器画图大家不好理解,就手动画图了ovo(不是因为懒)
就是循环查找遍历啦~
暴力法实现代码如下:
int getIndex(string p,string q)
{
int i=0;
int j=0;
while(i<(int)p.length() && j<(int)q.length())
{
if(p[i