KMP算法
算法无语法错误,但是在KMP子函数中返回了错误,查了一些资料,还是没弄懂
算法如下:
#include<stdio.h>
#include<string.h>
int kmp_v(char s[],char t[],int next[],int pos)
{
int i=pos,j=0;
while((i<strlen(s)&&(j<strlen(t))))
{
if(j==-1||s[i]==t[j])
{
i++;j++;
}
else
{
j=next[j];
}
}
if(strlen(t)!=j) --------------------------
{
return 0; 在这段老是输出return 0 这里 ,看不懂。
}
else
{
return i-strlen(t);
}---------------------------------------
}
void get_next(char t[],int next[])
{
int k=-1;
int j=0;
next[j]=k;
while(j<strlen(t))
{
if((k==-1)||(t[j]=t[k]))
{
++k;++j;
next[j]=k;
}
else
{
k=next[k];
}
}
}
int main()
{
int temp;
int next[100];
char s[1000],t[1000];
gets(s);
gets(t);
get_next(t,next);
temp=kmp_v(s,t,next,1);
printf("%d",temp);
return 0;
}