参考博客:
https://www.cnblogs.com/yjiyjige/p/3263858.html
next数组
int next[500];
void get_next(char *t)
{
int j,k;
j=0;
k=-1;
next[0]=-1;
while(j<tlen)
{
if(k==-1||t[j]==t[k])
{
next[++j]=++k;
}
else k=next[k];
}
KMP算法
int kmp(char *t,char *s)
{
int i=0,j=0;
int slen=strlen(s);
int tlen=strlen(t);
while(i<slen&&j<tlen)
{
if(j==-1||s[i]==t[j])
{
i++;
j++;
}
else j=next[j];
}
if(j==tlen)
return i-j;
return -1;
}