您的位置:首页 > 运维架构 > Linux

Kmp linux源码实现

2011-11-25 11:36 127 查看
voidkmp_init(const char *patn, int len, int *next)
{
int i, j;
next[0] = 0;
for (i = 1, j = 0; i < len; i ++) {
while (j > 0 && patn[j] != patn[i])
j = next[j - 1];
if (patn[j] == patn[i])
j ++;
next[i] = j;
}
}
intkmp_find(const char *text, int text_len, const char *patn,
int patn_len, int *next)
{
int i, j;
for (i = 0, j = 0; i < text_len; i ++ ) {
while (j > 0 && text[i] != patn[j])
j = next[j - 1];
if (text[i] == patn[j])
j ++;
if (j == patn_len)
return i + 1 - patn_len;
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: