KMP算法详解(本文章的KMP算法的实现是用C语言,没有进行串的存储结构的实现,使用的是char数组)
-
引言:
我们在小学的时候老师一定教过我们怎么查字典(不知道怎么查字典的请自行百度),其实查字典的一个过程,就好像我 们在写代码有时候需要在一个很长的字符串中去查找一个(或一段)子串,这个时候我们就会写一个程序来帮助我们找。也就引出了朴素模式匹配算法。
由于朴素模式匹配算法 的效率过于低,这时候就有三个大佬(D.E.Knuth、J.H.Morris、V.R.Pratt)忍受不了了,决定发明一个效率更高的模式匹配算法,这个时候KMP模式匹配算法便诞生了。 -
单词解释:
SubString : 子串;
PriString : 主串;
SubIndex : 子串的下标;
PriIndex : 主串的下标; -
朴素算法:
根据朴素模式算法我们知道它的实现思想就是,子串从下标0开始遍历,主串从下标0开始遍历,如果:SubString[SubIndex] == PriString[PriIndex] 那么SubIndex+1, PriIndex+1;否则 : SubIndex = 0, PriIndex返回到上次