zoukankan      html  css  js  c++  java
  • KMP模板

    #include <bits/stdc++.h>
    #define MAX 100005
    using namespace std;
    typedef long long ll;
    
    char W[MAX],T[MAX];
    int nxt[MAX];
     
    void getnext(int lenW)
    {
        int i=0,j=-1;
        nxt[i]=-1;
        while(i<lenW) {
            if(j==-1||W[i]==W[j]) {
                nxt[++i]=++j;
            }
            else j=nxt[j];
        }
    }
     
    int kmp(int pos,int lenW,int lenT)
    {
        int i=pos,j=0,ans=0;
        while(i<lenT) {
            if(T[i]==W[j]||j==-1) ++i,++j;
            else j=nxt[j];
            if(j==lenW) {
                ans++;
                j=nxt[j-1];
                i--;
            }
        }
        return ans;
    }
     
    int main()
    {
        scanf(" %s",T);int lenT=strlen(T);  //长串 
        scanf(" %s",W);int lenW=strlen(W);  //短串 
        getnext(lenW);  //短串匹配 
        printf("%d
    ",kmp(0,lenW,lenT));  //连续子串个数 
        return 0;
    }
  • 相关阅读:
    linux c++ 实现http请求
    pip 换源
    Web API接口
    DRF框架知识总览
    jq+bs插件
    element-ui插件
    axios插件
    前端存储数据汇总
    Vuex插件
    全局配置css和js
  • 原文地址:https://www.cnblogs.com/yzm10/p/9502334.html
Copyright © 2011-2022 走看看