【第0002页 · 枚举】月月查华华的手机

【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里:

第0002页 · 月月查华华的手机

        不知道在看的各位有没有被家里人查过手机呢?如果有,想必今天你会感同身受一些。我们现在要来看一道比较有意思的题目,其中涉及到的字符查找的思想很有意义。话不多说,先看题目。

【月月查华华的手机】月月和华华一起去吃饭了。期间华华有事出去了一会儿,没有带手机。月月出于人类最单纯的好奇心,打开了华华的手机。哇,她看到了一片的QQ推荐好友,似乎华华还没有浏览过。月月顿时醋意大发,出于对好朋友的关心,为了避免华华浪费太多时间和其他网友聊天,她要删掉一些推荐好友。但是为了不让华华发现,产生猜疑,破坏了他们的友情,月月决定只删华华有可能搭讪的推荐好友。
        月月熟知华华搭讪的规则。华华想与某个小姐姐搭讪,当且仅当小姐姐的昵称是他的昵称的子序列。为了方便,华华和小姐姐的昵称只由小写字母构成。为了更加方便,保证小姐姐的昵称长度不会比华华的长。
        现在月月要快速的判断出哪些推荐好友要删掉,因为华华快回来了,时间紧迫,月月有点手忙脚乱,所以你赶紧写个程序帮帮她吧!

        其中要求:1 <= A <= 1e6 ;  1 <= N <= 1e6 ; 1 <= sum[Bi] <= 1e6。

IO要求示例
输入描述:
第一行输入一个字符串A表示华华的昵称。
第二行输入一个正整数N表示华华的推荐好友的个数。
接下来N行,每行输入一个字符串Bi,Bi​表示某个推荐好友的昵称。

noiauwfaurainairtqltqlmomomo
8
rain
air
tql
ntt
xiaobai
oiiiooo
orzcnzcnznb
ooooo

输出描述:
输出N行,对于第i个推荐好友,如果华华可能向她搭讪,输出Yes,否则输出No。
注意大写,同时也要注意输出效率对算法效率的影响。

Yes

Yes

Yes

Yes

No

Yes

No

No

【解题分析】这道题目中需要我们对所有小姐姐的字符串在华华中查找一遍,判断是否是其子串。这里我们首先强调一个概念,在题目中没有说连续子字符串时,所谓的子串是可以不连续的,但是顺序要保持一致。

        我们最开始的思路肯定是对每个小姐姐字符串都将华华字符串扫一遍,但此时根据所给数据范围,最坏情况下为 10^12。这是不可以的,因此,我们考虑如何快速地检索字符是本题的关键。

        这里,我们给出的思路是:构造一个二维数组用来存储华华的每一位字符之后的下一个字符‘a’,'b','c',...... 分别在什么位置,这样就可以直接跳过中间的其余字符,大大减少检索遍历的次数,从而使最坏情况变为 10^6。这样就符合题目要求了。

        有了思路,我们就来写代码了,一些细节部分会在代码中以注释的形式给出,请注意查收哦!

【源码展示】

#include <cstdio>
#include <cstring>
using namespace std;
const int num = 1e6 + 10;
// nex[][]用来存储每一位字符的下一个字符所在位置
// case[]用来不断刷新下一字符所在位置
int nex[num][30], cast[30]; 
int main() {char name[num];scanf("%s", name);int len = strlen(name);// 如果下一个字符,例如'a'不存在了,则它的下一个位置记为-1,表示不存在memset(cast, -1, sizeof(cast));// 将每个字符之后的下一个字符的位置存储下来// 从尾部开始遍历,这样就能确保每次刷新一个字符所在的位置即可// 但之前需要先把这个位置之后的字符位置存入nex[][]中再刷新cast[]for (int i = len - 1; i >= 0; i--) {for (int j = 0; j < 26; j++) {nex[i][j] = cast[j];}cast[name[i] - 'a'] = i;}int N;scanf("%d", &N);while (N--) {int flag = 1; // 1表示Yeschar girl[num];scanf("%s", girl);int len1 = strlen(girl);// pos用来记录按照小姐姐字符串的下一位字符在华华字符串中的位置// 如果出现pos == -1,那么就证明这个小姐姐不是华华的子串int pos = cast[girl[0] - 'a'];if (pos == -1) {printf("No\n");continue;}for (int i = 1; i < len1; i++) {pos = nex[pos][girl[i] - 'a'];if (pos == -1) {flag = 0;break;}}if (flag == 1) printf("Yes\n");else printf("No\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是BI?BI系统的功能有哪些?哪些人需要BI工具支持?

什么是BI&#xff1f; BI是商业智能&#xff08;Business Intelligence&#xff09;的缩写。它是指通过收集、整理、分析和可视化企业内部和外部数据&#xff0c;从中获得洞察信息和决策支持的技术和流程。BI利用数据分析工具和技术&#xff0c;帮助企业管理者和决策者更好地理…

神经网络算法 - 一文搞懂One-Hot Encoding(独热编码)

本文将从独热编码的原理、独热编码的分类、独热编码的应用三个方面&#xff0c;带您一文搞懂独热编码 One-Hot Encoding 。 独热编码 特征数字化&#xff1a;将分类变量&#xff08;或称为离散特征、无序特征&#xff09;转换为一种适合机器学习算法处理的格式。 特征数字化 为…

Jenkins发邮件功能如何配置以实现自动化?

jenkins发邮件的设置指南&#xff1f;Jenkins怎么配置服务器&#xff1f; Jenkins作为一个流行的自动化服务器&#xff0c;其发邮件功能是通知团队成员构建状态的重要手段。AokSend将详细介绍如何配置Jenkins发邮件功能&#xff0c;以实现自动化通知。 Jenkins发邮件&#xf…

Nuxt 项目实战 - 15:自定义unocss规则,让编写样式更高效

与UI设计师约定颜色命名规则 配置color变量 color.scss $colors: ((#ffffff,#f8f8f8,#ebebeb,#dbdbdb,#cccccc,#999999,#666666,#333333,#000000),(#daf6ef, #b4ecde, #08c193, #228f73, #43d7b2),(#f62f3b, #edc9c9, #f0e2e2, #ffecea, #f78185),(#f2f5f8, #e3e8eb, #c3cace, …

AI 大模型时代,对前端工程师有哪些机遇和挑战?

随着人工智能的发展&#xff0c;AI大模型为人工智能领域带来了巨大的机遇和挑战。前端工程师作为软件开发的重要一环&#xff0c;也需要关注 AI 大模型的发展趋势&#xff0c;并探索如何将其应用于前端开发和优化中。 AI 大模型应用广泛&#xff0c;已经深入到各个行业&#x…

超声波清洗机哪个品牌比较耐用?家用超声波清洗机推荐

随着生活质量的提升&#xff0c;高品质眼镜日益受到青睐。遗憾的是&#xff0c;眼镜的恰当清洁与养护往往被忽视&#xff0c;导致镜片模糊、沾染污渍&#xff0c;直接影响视觉享受。为此&#xff0c;超声波眼镜清洗机应运而生&#xff0c;成为众多消费者的新选择&#xff0c;同…

Linux系统中没有安装 wget 命令

Linux系统中没有安装 wget 命令 1、Linux系统中没有安装 wget 命令2、安装 wget 1、Linux系统中没有安装 wget 命令 这个错误表明系统中没有安装 wget 命令。 2、安装 wget 如果 Linux 系统中没有安装 wget 命令&#xff0c;可以按照以下方法进行安装&#xff1a; 一、Cent…

Mysql基础练习题 181.找到收入比经理高的员工 (力扣)

181.找到收入比经理高的员工 建表插入数据&#xff1a; Create table If Not Exists Employee (id int, name varchar(255), salary int, managerId varchar(10)); Truncate table Employee insert into Employee (id, name, salary, managerId) values (1, Joe, 70000, 3); …

springboot农村留守儿童援助系统-计算机毕设 附源码 16875

springboot农村留守儿童援助系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了农村留守儿童援助系统的开发全过程。通过分析农村留守儿童援助系统管理的不足&#xff0c;创建了一个计算机管理农村留守儿童援…

伴奏提取怎么弄?这款神器让你的音乐创作无界限

记得在无数个夜晚&#xff0c;我沉浸在自己喜爱的歌曲中&#xff0c;每当旋律响起&#xff0c;就忍不住想要跟唱&#xff0c;但纯净的伴奏总是难觅踪迹。但自从我发现了伴奏提取怎么操作的秘密&#xff0c;一切变得简单起来&#xff01; 无论是家庭聚会&#xff0c;还是朋友K歌…

阿里云OSS文件存储

文章目录 参考准备创建bucketendpoint 和 bucket域名的访问路径AccessKey和OSS的开发文档 Springboot整合OSS引入依赖AliyunOssConfigAliyunOssPropertiesapplicatioin.yml简单上传和下载使用签名URL进行临时授权访问生成以PUT方法访问的签名URL来上传文件通过签名URL临时授权简…

html快速入门

HTML语言不区分大小写HTML语言不区分单双引号 基本结构&#xff1a;HTML head title&#xff1a;浏览器标题 body 示例&#xff1a; <!DOCTYPE html> <head><meta charset"UTF-8"><title>Hello World</title> </head><bod…

Centos LVM磁盘合并方法

Centos LVM磁盘合并方法 使用fdisk -l命令查看机器增加了2块物理磁盘&#xff0c;一块40G另一块50G 需要将这两块盘的空间合并在一起&#xff0c;而且还需要动态扩展即在不关机的情况下操作 使用pvcreate将两块新增的物理磁盘加入物理卷 [rootlocalhost ~]# pvcreate /dev/sdb…

想避免踩雷选到好用的骨传导耳机?精选热门五款分享

目前在市面当中&#xff0c;骨传导耳机被称之为是黑科技耳机&#xff0c;骨传导耳机拥有很多优势&#xff0c;在听歌时不需要入耳&#xff0c;不会伤耳朵。随着骨传导耳机品牌的不断发展&#xff0c;人们在选购骨传导耳机时&#xff0c;也会觉得非常困难&#xff0c;可能一不小…

小红书产品分析报告

一、体验环境 产品版本&#xff1a;V5.26.2 测试设备:OPPO 系统版本&#xff1a;Android 6.0.1 体验时间&#xff1a;2018-10-31 二、产品介绍 产品名称&#xff1a;小红书 产品类型&#xff1a;社交电商 产品slogan:标记我的生活 产品定位&#xff1a;一款年轻人都分享的…

运维学习————LVS集群和Keepalived+LVS高可用

目录 官网&#xff1a;LVS中文官网 一、概念 二、组成及软件工作层次图 ​编辑 三、整体架构 四、名词解释 五、三种工作模式 1、LVS-NAT 2、LVS-TUN 3、LVS-DR 六、DR模式的实现 1、克隆出LVS&#xff0c;配置虚拟IP 2、配置Nginx的虚拟IP Nginx1的配置 Nginx2…

react中配置Sentry

sentry 打开sentrySentry Docs | Application Performance Monitoring &amp; Error Tracking Software官网&#xff0c; 注册。根据提示创建应用后 在 React 应用中配置 Sentry 可以按照以下步骤进行&#xff1a; 安装 Sentry SDK: 在项目根目录下运行&#xff1a; npm in…

Android settings命令讲解和实战

1&#xff0c;简介 在Android系统中&#xff0c;settings命令用于管理设备设置。这些命令可以与Settings提供者&#xff08;Settings provider&#xff09;交互&#xff0c;后者是一个用于存储和检索系统设置的系统服务。Settings provider在Android系统中可以被看作是一个特殊…

(一) 初入MySQL 【认识和部署】

前置资源 一、数据库概述 1.1、数据库基本概念 数据(Data) 描述事物的符号记录称为数据。数字、文字、图形、图像、声音、档案记录等都是数据。数据是以“记录”的形式按照统一的格式进行存储的&#xff0c;而不是杂乱无章的。 相同格式和类型的数据统一存放在一起&#xff0…

IP-RDS-222、IP-PRZ-59-AM12、EG-TRZ-42-L、EG-TRZ-42-H比例减压阀放大器

IP-DAR-250、IP-DAR-43C-L、IP-DAR-43C-H、IP-RDS-222、IP-PRZ-59-AM12、EG-TRZ-42-L、EG-TRZ-42-H比例减压阀 EE-PRB、EE-PRD比例压力阀 EE-P2G、ET-P2S、EB-P2A、EE-P2A、ET-P2A、EE-P2H、EG-F2A、EU-F2A比例流量阀 EF-F3G、EU-F3G比例压力补偿流量阀 EQ-S4M、EG-S4M、EQ…