KMP字符串-acwing

2020-12-27 15:28

阅读:573

标签:size   iostream   enter   algo   mat   ios   ase   成功   sign   

https://www.acwing.com/problem/content/833/

暴力谁都会,完全就是一句话:next[i] = j ; //以i为结尾的非前缀子串与(从1开始的前缀的字符串)相等的长度是多少,然后就是j咯 、、之前记忆力不好又不经常使用的我总是忘记

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define rep(i,a,b) for(int i = a; i = a ; i --)
#define ll long long
#define inf 0x3f3f3f3f
#define ull unsigned long long
#define ios ios::sync_with_stdio(false),cin.tie(0)
using namespace std;
typedef pair PII ;

/*
ull gethash(int i,int j){//get hash of [i,j]
    return hs[j]-hs[i-1]*base[j-i+1];
}

bool judgehash(int i,int j){
    ull x=gethash(i,j);//the part of son‘s hash
    int id=lower_bound(v.begin(),v.end(),x)-v.begin();//found of two found
    if(id==v.size())return false;//if not found
    else return v[id]==x; //judge whether be found
}
*/

/*
void preget(int t)
{
    if(t == 0){
        return;
    }
    else if(t==1){
        fish++;
    }
    else if(t==2){
        h+=1;
    }
    else if(t==3)
    {
        fish++,h++;
    }
    else
        return ;
}

int done()
{
    yuer+=h;
    h=0;
    int cnt=0;
    if(fish==0 && yuer==0)
    {
        return 0;
    }
    else if(fish==0){
        cnt=1;
        yuer--;

    }
    else
    {
        if(fish==1){
            cnt=fish;
            fish--;
        }
        else{
            if(yuerfish){
                cnt=fish+2;
                yuer-=(fish+1);
            }
        }
    }
    return cnt;
}
*/
const int N = 2e5 + 10,M=2e6 + 10;
int n ,m;
char p[M],s[M];
int ne[N];

int main()
{
    ios;
    cin>>n>>(p+1)>>m>>(s+1);

    //get next position   以i为结尾的非前缀字符串与从1开始的字符串的最大长度
    for(int i = 2,j=0;i

  

KMP字符串-acwing

标签:size   iostream   enter   algo   mat   ios   ase   成功   sign   

原文地址:https://www.cnblogs.com/jxust-Biao/p/13337929.html


评论


亲,登录后才可以留言!