zoukankan      html  css  js  c++  java
  • hihoCoder 1015KMP

    #include <iostream>
    #include <algorithm>
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    using namespace std;
    #define N 2000010
    
    char s[N],p[N];
    int next1[N];
    int kmp(char* s, char* p)
    {
        int num=0;
        int i = 0;
        int j = 0;
        int sLen = strlen(s);
        int pLen = strlen(p);
        while (i < sLen && j < pLen)
        {
            if (j == -1 || s[i] == p[j])
            {
                i++;
                j++;
            }
            else
            {
                j = next1[j];
            }
            if(j==pLen) {
                num++;
                j = next1[j];
            }
        }
    
        return num;
    }
    ///求部分匹配表
    void GetKMPNext(char* p, int next[])
    {
        int pLen = strlen(p);
        next1[0] = -1;
        int k = -1;
        int j = 0;
        while (j < pLen)  ///计算到0 - len
        {
            if (k == -1 || p[j] == p[k])
            {
                ++j;
                ++k;
                if (p[j] != p[k])
                    next1[j] = k;
                else
                    next1[j] = next1[k];
            }
            else
            {
                k = next1[k];
            }
        }
    }
    
    
    int main() {
        //freopen("input.txt","r",stdin);
        int T;
        scanf("%d",&T);
        while(T--){
            scanf("%s %s",p,s);  //p为模式串
            GetKMPNext(p,next1);
            printf("%d
    ",kmp(s,p));
        }
        return 0;
    }
  • 相关阅读:
    xlrd模块
    魔法路由ViewSetMixin
    AES加密
    orm的增删改查
    引入方式+样式+选择器
    视图+sql注入+事务+存储过程
    mysql用户管理+pymysql模块
    记录的详细操作
    约束
    一次http请求参数问题
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6921550.html
Copyright © 2011-2022 走看看