P3375 模板 KMP字符串匹配

Posted heyuhhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3375 模板 KMP字符串匹配相关的知识,希望对你有一定的参考价值。

P3375 【模板】KMP字符串匹配

来一道模板题,直接上代码。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 5;
int n, m;
char s1[N], s2[N];
int nxt[N] ;
void Get_next(char *s) {
    int j, L = strlen(s + 1);
    nxt[1] = j = 0;
    for(int i = 2; i <= L; i++) {
        while(j && s[i] != s[j + 1]) j = nxt[j] ;
        if(s[i] == s[j + 1]) j++;
        nxt[i] = j;
    }
}
int main() {
    scanf("%s%s", s1 + 1, s2 + 1);
    Get_next(s2) ;
    int L1 = strlen(s1 + 1), L2 = strlen(s2 + 1) ;
    for(int i = 1, j = 0; i <= L1; i++) {
        while(j > 0 && (j == L2 || s1[i] != s2[j + 1])) j = nxt[j] ;
        if(s1[i] == s2[j + 1]) j++;
        if(j == L2) cout << i - L2 + 1 << '\n' ;
    }
    for(int i = 1; i <= L2; i++) cout << nxt[i] << ' ' ;
    return 0;
}

以上是关于P3375 模板 KMP字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P3375 模板KMP字符串匹配

luogu P3375 KMP字符串匹配 模板

洛谷—— P3375 模板KMP字符串匹配

洛谷 P3375 模板KMP字符串匹配 || HDU 1686 Oulipo || kmp

洛谷P3375 [模板]KMP字符串匹配

[每日一题2020.06.12]P3375 模板KMP字符串匹配