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

    今天又加深的理解了KMP

    认真看了这篇博客,感觉讲的还ok;

    然后带着理解写了洛谷的P3375字符串KMP模板题;

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    const int maxn = 1e6+9;
    string t,s;
    int Next[maxn];
    
    void get_next()
    {
        int len = s.length();
        int k=-1 , j = 0;
        Next[0] = -1;
        while(j<len)
        {
            if(k==-1||s[j]==s[k])
            {
                j++,k++;
                // if(s[j]!=s[k])
                Next[j] = k;
                // else Next[j] = Next[k];
            }
            else k = Next[k];
        }
    }
    
    void match()
    {
        int slen = s.length();
        int tlen = t.length();
        int j = 0,k = 0;
        while(j<tlen)    
        {
            if(k==-1||s[k]==t[j])
            {
                j++,k++;    
            }
            else k = Next[k];
            if(k==slen)
            {
                printf("%d
    ",j-k+1);
                k = 0;j--;
            }
        }
    }
    int main(){
        cin>>t>>s;
        get_next();
        match();
        // cout<<"))"<<endl;
        int llen = s.length();
        // Next[0] = 0;
        for(int i=1;i<=llen;i++)
            printf("%d%c",Next[i]," 
    "[i==llen]);
        return 0;
    }
  • 相关阅读:
    Vue3.0
    Vue
    Vue
    Vue3.0
    Vue
    Vue
    Vue
    Vue
    Vue3.0
    万字长文|十大基本排序,一次搞定!
  • 原文地址:https://www.cnblogs.com/ckxkexing/p/9058435.html
Copyright © 2011-2022 走看看