ZJM 与纸条

2023-05-16

ZJM 的女朋友是一个书法家,喜欢写一些好看的英文书法。有一天 ZJM 拿到了她写的纸条,纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物。ZJM 想知道自己收到的礼物是不是就是她送的,于是想看看自己收到的礼物在纸条中出现了多少次。

Input
第一行输入一个整数代表数据的组数

每组数据第一行一个字符串 P 代表 ZJM 想要的礼物, 包含英语字符 {‘A’, ‘B’, ‘C’, …, ‘Z’}, 并且字符串长度满足 1 ≤ |P| ≤ 10,000 (|P| 代表字符串 P 的长度).
接下来一行一个字符串 S 代表 ZJM 女朋友的纸条, 也包含英语字符 {‘A’, ‘B’, ‘C’, …, ‘Z’}, 满足 |P| ≤ |S| ≤ 1,000,000.
Output
输出一行一个整数代表 P 在 S中出现的次数.

Sample Input

3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN

Sample Output

1
3
0

思路:

找符合条件的连续子串;
暴力匹配会超时;
选择KMP算法;

代码:

#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e4 + 5;
const int maxm = 1e6 + 5;
int Next[maxn];
char str[maxm], ptr[maxn];

void get_next(const char str[])
{
    int len = strlen(str);
    Next[0] = 0;
    for (int i = 1, j = 0; i < len; i++)
    {
        while (j && str[i] != str[j])
            j = Next[j - 1];
        if (str[j] == str[i])
            j++;
        Next[i] = j;
    }
}
int KMP(const char str[], const char ptr[])
{
    int len1 = strlen(str);
    int len2 = strlen(ptr);
    int j = 0, ans = 0;//ans 记录成功匹配次数
    get_next(ptr);
    for (int i = 0; i < len1; i++)
    {
        while (j && ptr[j] != str[i])
            j = Next[j - 1];
        if (ptr[j] == str[i])
            j++;
        if (j == len2)
        {  //匹配到模式串末尾
            ans++;
            j = Next[j - 1];   //根据next数组转移
        }
    }
    return ans;
}

int main()
{
    int t;
    scanf("%d", &t);
    for (int i = 1; i <= t; i++)
    {
        memset(Next, 0, sizeof(Next));
        scanf("%s", &ptr);
        scanf("%s", &str);
        printf("%d\n", KMP(str, ptr));
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZJM 与纸条 的相关文章

  • 数据结构:使用链栈实现回文判断

    题目 xff1a 回文判断 试写一个算法 xff0c 判断依次读入的一个以 64 为结束符的字母序列 xff0c 是否为形如 序列1 amp 序列2 模式的字符序列 其中序列1和序列2中都不含字符 amp xff0c 且序列2是序列1的逆序
  • Python 读取pdf

    好久没有更新 xff0c 主要是工作比较忙 抽空记录一个最近用到的东西 用python 读取pdf 话不多少 还是先上代码 span class token keyword import span pdfplumber span class
  • Python中的字符串相似度

    文章目录 一 Python字符串相似度二 Python相似度评估1 在计算图片的相似度时 xff0c 我自己用到过余弦距离2 欧式距离3 曼哈顿距离4 切比雪夫距离5 闵可夫斯基距离6 标准化欧氏距离7 马氏距离8 编辑距离 一 Pytho
  • 浅谈linux开发板用户登录之getty/login/passwd

    最近在排查一个关于用户登录的问题 xff0c 需要了解开发板启动以及远程登录进行用户名和密码验证背后的原理 经过查询学习 xff0c 简单总结如下 文章目录 前言一 Linux开发板登录机制二 getty login passwd1 get
  • 【实用技巧】rpm包下载,安装。获取rpm资源

    1 rpm包下载 我们使用yum install命令的时候一般下载下来会直接安装 xff0c 但是如果我们只想下载rpm包而不安装该怎么做呢 xff1f 安装 yum utils yum span class token function
  • 新手折腾wsl

    新手折腾wsl图形界面 本文记录一些本人 xff08 未学习Linux相关知识 xff09 折腾wsl踩过的坑 xff0c 以及参考的有效的解决方案 换源 这个搞过的都懂 xff0c 不翻墙的话 xff0c 用本身的那个源 xff0c 更新
  • Windows server

    显示win server信息 xff1a 进入cmd下输入systeminfo 启动控制台 没有功能可以添加 xff1a mmc 启动服务器管理器 xff1a services msc 进入防火墙的配置 xff1a wf msc 添加Win
  • 配置与管理DNS服务器

    实训目的 项目环境及要求 win2012 1 xff08 已经安装了long com域 xff09 xff08 并且是long com的域控 xff09 win2012 4 xff08 在这台服务器上部署DNS服务 xff09 win7 x

随机推荐

  • 配置与管理Web和FTP服务器

    实训目的 项目环境要求 win2012 1 xff1a 已经安装long com的域并且已经安装DNS win2012 4 xff1a 部署服务 win7 安装服务 添加功能 勾选 安装完成 进入IIS管理器 在此完成网站的创建和FTP的创
  • 公式推导

    公式推导 事件为相互独立的情况 xff1a n 个相互独立且服从相同分布的事件 X 1 X 2 X n xff0c 其标准差为 期望为 则总的的事件的期望和方差分别为 xff1a E X 1 43 X 2 43 X n
  • Windows 10 docker 容器添加新端口映射的方法与步骤

    在Docker容器已经创建后 xff0c 需要添加新的端口映射 xff0c 即对已经存在的Docker容器添加新的端口映射 xff0c 可以通过以下步骤来添加 xff0c 即通过修改配置文件的方法 1 Windows 10 下 Docker
  • 配置yum源挂载mount /dev/sr0 /iso报错mount: 在 /dev/sr0 上找不到媒体

    span class token punctuation span root 64 localhost span class token punctuation span span class token comment umount de
  • Debian之CA认证

    安装服务 root 64 debian etc chrony span class token comment apt install y openssl span 配置文件 root 64 debian etc chrony span c
  • 字符串内建函数

    find函数查找 strint example span class token operator 61 span span class token string 34 hello world good night 34 span inde
  • 列表·元组·字典

    使用索引访问列表元素 list explam span class token operator 61 span span class token punctuation span span class token string 39 xi
  • Python函数

    默认参数 def print info span class token punctuation span name age span class token operator 61 span span class token number
  • 辗转相除法原理讲解

    首先介绍一下辗转相除法 xff1a 即m 和 n求最大公因数 xff08 假设m大于n xff09 xff0c 先用 m 除以 n xff0c 如果余数 r 为 0 xff0c 则 n 就是最大公因数 xff0c 否则 xff0c 将 n
  • 手把手系列---安装SpotBugs、并快速上手使用

    手把手系列 安装SpotBugs 手把手系列前言一 SpotBugs是什么 xff1f 二 SpotBugs 的下载1 在线安装 xff08 三步 xff09 2 网页下载百度云下载到本地 三 使用SpotBugs常用配置SpotBugS使
  • windows安装vcpkg过程下载失败问题的解决方法

    vcpkg的中文文档 xff1a https github com microsoft vcpkg blob master README zh CN md 第一步 xff1a 从GitHub拉取 git clone https github
  • 51单片机定时器初值计算问题

    最近在看51单片机的定时器与中断 xff0c 作为51单片机比较重点的内容 xff0c 很多人也花费了很长时间在这上面 xff0c 有些问题网上的资料方法各不相同 xff0c 也看得云里雾里 xff0c 比如定时器的初值计算问题 xff0c
  • Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)

    Go 在 Windows 上用户图形界面 GUI 解决方案 Go WinGUI 国产 xff08 使用cef 内核 xff09 参考文章 xff1a xff08 1 xff09 Go 在 Windows 上用户图形界面 GUI 解决方案 G
  • MXNet 中文文档

    MXNet 中文文档 MXNet 中文文档 MXNet设计和实现简介编程接口 Symbol 声明式的符号表达式NDArray命令式的张量计算KVStore 多设备间的数据交互读入数据模块训练模块 系统实现 计算图 计算图优化内存申请 引擎数
  • mybatis-plus整合springboot自动生成文件

    mybatis plus整合springboot自动生成dao层 导入依赖 span class token tag span class token tag span class token punctuation lt span dep
  • c++实现——TT的神秘礼物

    题意 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务
  • 简单差分方法的应用

    题意 Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a magic cat O
  • 咕咕东的奇妙序列 --找规律

    题目描述 咕咕东 正在上可怕的复变函数 xff0c 但对于稳拿A Plus的 咕咕东 来说 xff0c 她早已不再听课 xff0c 此时她在睡梦中突然想到了一个奇怪的无限序列 xff1a 112123123412345 这个序列由连续正整数
  • HRZ学英语

    思路 xff1a 这道题的要求很简单 第一个出现的26字母序列 xff0c 其字典序改成最小的即可 解释一下 1 给定序列 gt 61 26个 从左向右每26个字母为一组 xff0c 如果这组的 变成字母后满足26字母即可 xff0c 搜索
  • ZJM 与纸条

    ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0c 于是想