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; 
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    鼠标拖放div 实现
    layerX offsetX pageX
    960 grid 使用
    960 grid 分析
    WebMatrix安装和使用
    Sass使用教程
    CSS预处理器实践之Sass、Less比较
    node.js 入门教程(beginnder guide
    node.js NPM 使用
    《Head First 设计模式》学习笔记——状态模式
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7360159.html
Copyright © 2011-2022 走看看