KMP
char a[maxn];
char b[maxn];
int Next[maxn];
void getNext(int m) {
int j = 0, k = -1;
Next[0] = -1;
while(j < m) {
if(k == -1 || b[j] == b[k]) {
j ++,k ++;
Next[j] = k;
} else k = Next[k];
}
}
int KMP(int n,int m) {
getNext(m);
int cnt = 0,i = 0,j = 0;
while(i < n) {
if(j == -1 || b[j] == a[i]) {
i ++, j ++;
} else j = Next[j];
if(j == m) {
cnt ++;
j = 0;
}
}
return cnt;
}
本文详细介绍了一种高效的字符串匹配算法——KMP算法,并提供了完整的代码实现。通过预处理模式串生成Next数组来避免回溯,提高了搜索效率。
552

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



