zoukankan      html  css  js  c++  java
  • LibreOJ #103. 子串查找

    题目描述

    这是一道模板题。

    给定一个字符串 A AA 和一个字符串 B BB,求 B BB 在 A AA 中的出现次数。

    A AA 中不同位置出现的 B BB 可重叠。

    输入格式

    输入共两行,分别是字符串 A AA 和字符串 B BB。

    输出格式

    输出一个整数,表示 B BB 在 A AA 中的出现次数。

    样例

    样例输入

    zyzyzyz
    zyz

    样例输出

    3

    数据范围与提示

    1≤A,B 1 leq A, B1A,B 的长度 ≤106 leq 10 ^ 6106​​,A AA、B BB 仅包含大小写字母。

    kmp模板题 

    屠龙宝刀点击就送

    #include <cstring>
    #include <cstdio>
    const int N = 1e6+5;
    int la,lb,Next[N];
    char A[N],B[N];
    void Get_next()
    {
        int i=0,j=-1;
        Next[i]=j;
        for(;i<lb;)
        {
            if(j==-1||B[i]==B[j]) i++,j++,Next[i]=j;
            else j=Next[j];
        }
    }
    int kmp()
    {
        Get_next();
        int ans=0,i=0,j=0;
        for(;i<la&&j<lb;)
        {
            if(j==-1||B[j]==A[i]) i++,j++;
            else j=Next[j];
            if(j==lb) {ans++;j=Next[j];}
        }
        return ans;
    }
    int main()
    {
        scanf("%s",A);
        scanf("%s",B);
        la=strlen(A),lb=strlen(B);
        printf("%d
    ",kmp());
        return 0; 
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    httpd添加新模块
    编译httpd细节
    apache配置文件说明及一些指令
    xen原理
    EXSI的使用
    VMWare ESX server安装
    虚拟化技术
    Kvm命令集管理虚拟机
    RAID几种方式
    BZOJ1011 [HNOI2008]遥远的行星 【奇技淫巧】
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7360159.html
Copyright © 2011-2022 走看看