kmp算法详解
KMP模式匹配算法
KMP算法是一种改进的字符串匹配算法,其关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数,以达到快速匹配的目的[4]。
在获得模式的特征向量后,基于特征分析的快速模式匹配算法(KMP模式匹配算法)类似于朴素匹配算法,只是当每次匹配过程中出现一定的不匹配时,模式不再简单地后退一位,而是根据当前字符的特征号确定向右的位数[3]。
包括”字符串。h "
# include & lt断言。h & gt
int KMPStrMatching(String T,String P,int。n,int startIndex)
{ int last index = t . strlen()-p . strlen();
if((1 astIndex-startIndex)& lt;0)//如果startIndex太大,匹配无法成功。
return(-1);//光标指向p的内部字符
int I;//光标指向T内部字符
int j = 0;//光标指向p的内部字符
for(I = startIndex;我& ltt . strlen();i++)
{while(P[j]!= T[I]& amp;& ampj & gt0)
j = N[j-1];
if(P[j]==T[i])
j++;
if(j ==P.strlen())
return(1-j+1);//如果匹配成功,则返回T子串的起始位置。
}
return(-1);
}