void getnext()
{
int i=0;
int j= next[0] = -1;
while( i < pattern_len)
{
if( j==-1 || pattern[i] == pattern[j] )
{
i++; j++;
if (pattern[i] != pattern[j])
next[i] = j;
else
next[i] = next[j];
}
else
j = next[j];
}
}
int kmp()
{
int i = 0, j = 0;
str_len = strlen(str);
getNext();
while (i < str_len && j < pattern_len)
{
if (j == -1 || str[i] == pattern[j])
{
++i;
++j;
}
else
j = next[j];
}
if (j >= pattern_len)
return i - pattern_len;
else
return -1;
} KMP模板
最新推荐文章于 2018-10-08 20:45:50 发布
773

被折叠的 条评论
为什么被折叠?



