您的位置:首页 > 其它

模式匹配kmp算法

2011-05-20 09:53 267 查看
#include <string.h>
#include <stdio.h>

void kmp() // pattern match
{
char   pat[] = "abaabcac";
char   text[] = "acabaabaabcacaabc";

int    i, j, pLen = strlen(pat), tLen = strlen(text);
int    preVal[8];

preVal[0] = -1; i = 0, j = -1;

printf ("preVal : %d ", preVal[0]);
while (i < pLen-1) {
if (j == -1 || pat[i] == pat[j]) {
++i; ++j;
if (pat[i] != pat[j]) preVal[i] = j;
else preVal[i] = preVal[j];

printf ("%d ", preVal[i]);
} else {
j = preVal[j];
}
} printf ("/n");

i = 0, j = 0;

while (j < pLen && i < tLen) {
if (j == -1 || pat[j] == text[i]) { ++i; ++j; }
else j = preVal[j];
}
if (j == pLen) printf ("i = %d.", i); //puts (text+(i - pLen));
else printf ("not found!/n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: