• kmp模板~


    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <queue>
    #include <map>
    using namespace std;
    int Next[100010];
    string s[100010];
    void getNext(string s)
    {
        int i,j;
        i=0;
        j=-1;
        int len=s.length();
        Next[0]=-1;
        while(i<len && j<len)
        {
            if(j==-1 || s[i]==s[j]) Next[++i]=++j;
            else j=Next[j];
        }
    }
    bool kmp(string m,string s) // s对应子串
    {
        getNext(s);
        int i,j;
        i=j=0;
        int mlen=m.length();// i
        int slen=s.length();// j
        while(i<mlen && j<slen)
        {
            if(j==-1 || m[i]==s[j]) i++,j++;
            else j=Next[j];
        }
        if(j==slesn) return true;
        return false;
    }
    int kmp_count(string m,string s) // 记录子串的出现次数
    {
        getNext(s);
        int i,j;
        i=j=0;
        int mlen=m.length();// i
        int slen=s.length();// j
        int ret=0;
        while(i<mlen)
        {
            if(j==-1 || m[i]==s[j]) i++,j++;
            else j=Next[j];
            if(j==slen)
            {
                j=Next[j];
                ret++;
            }
        }
        return ret;
    }
    int main()
    {
        cin.sync_with_stdio(false);
        int t;
        cin>>t;
        while(t--)
        {
            string m,s;
            cin>>s>>m;
            cout<<kmp_count(m,s)<<endl;
        }
        return 0;
    }
  • 相关阅读:
    实验6.1
    SOA
    python的镜像包安装
    中文分词:双向匹配最大算法(BI-MM)
    从github中获取代码
    解决文件冲突
    创建分支
    上传本地文件到github
    mysql事务
    查询练习2
  • 原文地址:https://www.cnblogs.com/z1141000271/p/7549912.html
Copyright © 2020-2023  润新知