kmp算法
这个视频可以让你们很清晰的了解kmp算法的过程
视频在这里
kmp算法视频
大家看过视频后会对kmp算法有更加深入的了解!!!
代码实现部分
void GetNext(char str[],int next[],int n)
{
int k,j;
k=-1;
j=0;
next[0]=-1;
while(j!=n-1)
{
if(k==-1||str[j]==str[k])
{
j+=1;
k+=1;
next[j]=k;
}
else
k=next[k];
}
}
int KMPindex(char str[],char strson[])
{
int num1=(int)strlen(str);
int num2=(int)strlen(strson);
int next[num2];
GetNext(strson, next, num2);
int i=0,j=0;
while(i<num1&&j<num2)
{
if(j==-1||str[i]==strson[j])
{
i++;
j++;
}
else
j=next[j];
}
if(j==num2)
return i-num2;
else
return -1;
}
总结
今天的分享就到这里,希望大家能下去多进行练习。