【NOIP模板】KMP

来源:互联网 发布:淘宝网店推能学会吗 编辑:程序博客网 时间:2024/05/22 17:31
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int T, nxt[1000050], lens, lent;char s[1000050], t[1000050]; void init() {    int i = 0, j = -1;    nxt[0] = -1;    while(i < lent) {        if(j == -1 || t[j] == t[i]) {            i ++, j ++;            nxt[i] = j;        }        else j = nxt[j];    }}int kmp() {    int i = 0, j = 0, ans = 0;    while(i < lens) {        if(j == -1 || s[i] == t[j]) {            i ++, j ++;            if(j == lent) j = nxt[j], ans ++;        }        else j = nxt[j];    }    return ans;}int main() {     scanf("%d", &T);    while(T --) {        scanf("%s", &t);        scanf("%s", &s);        lent = strlen(t);        lens = strlen(s);        init();        printf("%d\n", kmp());    }    return 0;}
原创粉丝点击