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;
}
本文深入解析KMP算法,详细介绍了KMP初始化和查找过程,通过实例演示了如何利用KMP算法实现字符串匹配,提高了搜索效率。
415

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



