简单KMP

来源:互联网 发布:js给div添加class 编辑:程序博客网 时间:2024/06/06 08:33

#include<bits/stdc++.h>using namespace std;int next[1005];int kmp(char *a,char *b){    //a,b start from 1    int mx=0;    int la=strlen(a),lb=strlen(b);    int j=0;    for(int i=2;i<=lb;i++)    {        while(j>0&&b[j+1]!=b[i]) j=next[j];        if(b[j+1]==b[i]) j++;        next[i]=j;    }    j=0;    for(int i=1;i<=la;i++)    {        while(j>0&&b[j+1]!=a[i]) j=next[j];        if(b[j+1]==a[i]) j++;        mx=max(mx,j);        if(j==lb) return j;    }    return mx;}int main(){    char a[]=" sadfasfas";char b[]=" sad";    int ans=kmp(a,b);    printf("%d\n",ans);}

0 0
原创粉丝点击