阅读 157

KMP模板

KMP模板

复制代码

#include <bits/stdc++.h>using namespace std;const int maxn=1e5+100;int kmp[maxn];int main()
{    char b[maxn];
    scanf("%s",b+1);    int j=0,lb=strlen(b+1);    for(int i=2;i<=lb;i++){        while(j&&b[i]!=b[j+1])j=kmp[j];        if(b[i]==b[j+1])j++;
        kmp[i]=j;
    }j=0;    char a[maxn];scanf("%s",a+1);int la=strlen(a+1);    for(int i=1;i<=la;i++){        while(j&&a[i]!=b[j+1])j=kmp[j];        if(a[i]==b[j+1])j++;        if(j==lb){
            cout<<i-j+1<<"\n";
        }
    }    for(int i=1;i<=lb;i++)
        cout<<kmp[i]<<" ";
}


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐