KMP

Posted guaguastandup

tags:

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

KMP

模板

prefix function 前缀函数

vector<int> prefix_function(int n){
    vector<int> pi(n);
    for (int i = 1; i < n;i++){
        int j = pi[i - 1];
        while(j>0&&t[i]!=t[j])j = pi[j - 1];
        if(t[i]==t[j])j++;
        pi[i] = j;
    }
    return pi;
}

例题

[CF204E]

题意

给定一主串,再查询某字符串是否可以由主串的两个子串拼接而成.

思路

正反向各kmp一次

记录查询的字符串的前缀和后缀在主串中的位置

代码:先空着,之前的代码写的不太对

[CCPC秦皇岛]

题意

跟找循环节有关

思路

正&&反

代码 : http://xlorpaste.cn/kwgp23

以上是关于KMP的主要内容,如果未能解决你的问题,请参考以下文章

kmp算法的个人理解

Python ---- KMP(博文推荐+代码)

KMP算法及Python代码

KMP算法及Python代码

Kmp算法Java代码实现

数据结构—串KMP模式匹配算法