//静态存储
typedef struct{
char ch[MLen];
int length;
}SString;
//动态存储
typedef struct{
char *ch;
int length;
}HString;
//模式匹配算法
int index(SString s,SString t)
{
int i=1,j=1;
while(i<=s.length&&j<=t.length)
{
if(s.ch[i]==t.ch[j])
{
i++,j++;
}
else
{
i=i-j+2;
j=1;
}
}
if(j>t.length)
{
return i-t.length;
}
else
{
return 0;
}
}
//kmp
void get_next(String s,int next[])
{
int i=1,j=0;
next[1]=0;
while(i<t.length)
{
if(j==0||t.ch[i]==t.ch[j])
{
i++,j++;
next[i]=j;
}else{
j=next[j];
}
}
}
int index_kmp(String s,String t,int next[])
{
int i=1,j=1;
while(i<=s.length&&j<=t.length)
{
if(j==0||s.ch[i]==t.ch[j])
{
j++,i++;
}
else
{
j=next[j];
}
if(j>t.length)
{
return i-t.length;
}
else
return 0;
}
}