kmp数组代码用c来写
时间: 2024-05-02 15:19:07 浏览: 66
可以,KMP算法的代码实现比较简单,可以用C语言来实现。你可以参考下面的代码:
```c
void build_kmp(int *p, const char *pat) {
int i = 0, j = -1;
p[0] = -1;
while (pat[i]) {
if (j == -1 || pat[i] == pat[j]) {
i++; j++;
p[i] = j;
} else {
j = p[j];
}
}
}
int kmp(const char *str, const char *pat) {
int i = 0, j = 0;
int slen = strlen(str), plen = strlen(pat);
int *p = (int*)malloc(sizeof(int) * plen);
build_kmp(p, pat);
while (i < slen && j < plen) {
if (j == -1 || str[i] == pat[j]) {
i++; j++;
} else {
j = p[j];
}
}
free(p);
if (j == plen) {
return i - j;
}
return -1;
}
```
阅读全文