KMP算法

来源:互联网 发布:java思想 编辑:程序博客网 时间:2024/06/05 23:49

【题目】
有一串字符串s要与字符串t匹配。
【分析】
kmp跑一遍就行了。

#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn=1e9;int next[maxn],f[maxn];char s[maxn],t[maxn];int main(){    scanf("%s%s",s+1,t+1);    for(int i=2,j=0;i<=strlen(s+1);i++)    {        while(j>0&&s[j+1]!=s[i])            j=next[j];        if(s[j+1]==s[i])            j++;        next[i]=j;    }    for(int i=1,j=0;i<=strlen(s+1);i++)    {        while(t[j+1]!=s[i])            j=next[j];        if(t[j+1]==s[i])            j++;        f[i]=j;    }    for(int i=1;i<=strlen(s+1);i++)        printf("%d ",f[i]);    printf("\n");    return 0;}
0 0
原创粉丝点击