首页 > 其他 > 详细

KMP模板

时间:2019-02-11 22:04:15      阅读:156      评论:0      收藏:0      [点我收藏+]
struct KMP {
    void print() {

    }
    void GetFail(char *P,int *f) {
        int m=strlen(P);
        f[0]=f[1]=0;
        for(int i=1; i<m; i++) {
            int j=f[i];
            while(j&&P[i]!=P[j])
                j=f[j];
            f[i+1]=P[i]==P[j]?j+1:0;
        }
    }
    void Find(char *T,char *P,int *f) {
        int n=strlen(T),m=strlen(P);
        GetFail(P,f);
        for(int i=1; i<m; i++) {
            int j=f[i];
            while(j&&P[i]!=P[j]) j=f[j];
            if(P[j]==P[i]) j++;
            if(j==m) print();//找到了
        }
    }
};

 

KMP模板

原文:https://www.cnblogs.com/033000-/p/10363309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!