KMP算法

Posted 最爱小崔同学

tags:

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

//KMP算法   
#include<iostream>
using namespace std;
const int N=10010,M=10010;
int n,m;
char p[N],s[M];
int ne[N];
int main()

    cin>>n>>p+1>>m>>s+1;

//next[] 数组
    for(int i=2,j=0;i<=n;i++)
    
        while(j&&p[i]!=p[j+1]) j=ne[j];
        if(p[i]==p[j+1]) j++;
        ne[i]=j;
    

//通过Next数组快速匹配
    for(int i=1,j=0;i<=m;i++)
    
        while(j&&s[i]!=p[j+1]) j=ne[j];
        if(s[i]==p[j+1]) j++;
        if(j==n)  
            printf("%d",i-n);
            j=ne[j];
        
    
    return 0;

//由于我也不是很会,就只能给大家分享一下代码,抱歉抱歉嘿嘿。我只是明白,能写出来讲不出来。。。。

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

什么是KMP算法?KMP算法推导

KMP算法及KMP算法的应用(POJ2406)

KMP算法

kmp算法

kmp算法

KMP算法