蓝桥杯 第 1 场算法双周赛 第1题 三带一 c++ map 巧解 加注释

news2024/12/25 9:59:02

题目

三带一【算法赛】icon-default.png?t=N7T8https://www.lanqiao.cn/problems/5127/learning/?contest_id=144

问题描述

小蓝和小桥玩斗地主,小蓝只剩四张牌了,他想知道是否是“三带一”牌型。

三带一

所谓“三带一”牌型,即四张手牌中,有三张牌一样,另外一张不与其他牌相同,换种说法,四张手牌经过重新排列后,可以组成 AAAB 型。

输入格式

第一行输入一个整数 T ,代表斗地主的轮数。

接下来 T 行,每行输入一个长度为 44 的字符串,代表小蓝的手牌。

字符 { 'A','2','3','4','5','6','7','8','9','X','J','Q','K' } 对应代表牌面 { A,2,3,4,5,6,7,8,9,10,J,Q,K } 。

牌面中不包含大小王。

输出格式

输出 T 行,每行一个字符串,如果当前牌是“三带一”牌型,输出 Yes ,否则输出 No 。

样例输入

5
AAAA
33X3
JQKX
6566
KKKQ

样例输出

No
Yes
No
Yes
Yes

说明

“四炸”牌型不属于“三带一”牌型。

评测数据范围

数据范围:1≤501≤T≤50 。

字符中只包含:{ A,2,3,4,5,6,7,8,9,X,J,Q,K } 。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M

总通过次数: 2697  |  总提交次数: 4096  |  通过率: 65.8%

难度: 中等

思路和解题方法

  1. #include <iostream>:包含输入输出流库,提供与标准输入输出设备的接口。
  2. #include <unordered_map>:包含无序哈希映射库,用于存储字符和对应的出现次数。
  3. using namespace std:使用std命名空间,简化对标准库的调用。
  4. int main():主函数,程序的入口。
  5. int t;:声明一个整型变量t,用于记录测试用例的数量。
  6. string str;:声明一个字符串变量str,用于记录输入的字符串。
  7. cin >> t;:从标准输入读取一个整数,赋值给变量t。
  8. for (int i = 0; i < t; i++) { ... }:循环t次,执行测试用例。
  9. cin >> str;:从标准输入读取一个字符串,赋值给变量str。
  10. bool flag = false;:声明一个布尔型变量flag,用于标记是否存在出现次数为3的字符。
  11. unordered_map<char, int> map;:声明一个无序哈希映射,用于存储字符和对应的出现次数。
  12. for (int j = 0; str[j]; j++) { ... }:遍历字符串中的每个字符,统计字符出现的次数。
  13. map[str[j]]++;:将字符str[j]作为键,在哈希映射map中查找并使对应的值加1。
  14. for (auto &x : map) { ... }:遍历哈希映射map,查找出现次数为3的字符。
  15. if (x.second == 3) { ... }:如果字符的出现次数为3,则将flag设为true,并退出循环。
  16. if (flag == true):如果flag为true,即存在出现次数为3的字符。
  17. cout << "Yes" << endl;:输出"Yes"到标准输出。
  18. else:否则,即不存在出现次数为3的字符。
  19. cout << "No" << endl;:输出"No"到标准输出。
  20. return 0;:返回0,表示程序正常结束。

复杂度

        时间复杂度:

                O(n)

时间复杂度为O(n),其中n是输入字符串的长度。代码中有两个嵌套循环,分别遍历字符串和哈希映射,但每个字符只会被遍历一次,因此总体上是线性时间复杂度。

        空间复杂度

                O(k)

空间复杂度为O(k),其中k是字符串中不同字符的数量。代码使用了一个无序哈希映射来存储字符和对应的出现次数,最坏情况下会存储所有不同的字符,因此空间复杂度为O(k)。另外还有几个变量和固定大小的辅助空间,对总体空间复杂度的影响很小。

c++ 代码

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    int t; // 用于记录测试用例的数量
    string str; // 用于记录输入的字符串
    cin >> t;

    for (int i = 0; i < t; i++) { 
        cin >> str; // 输入字符串
        bool flag = false; // 用于标记是否存在出现次数为3的字符
        unordered_map<char, int> map; // 使用无序哈希映射存储字符和对应的出现次数

        // 遍历字符串中每个字符,统计字符出现的次数
        for (int j = 0; str[j]; j++) {
            map[str[j]]++; // 字符出现次数加1
        }

        // 遍历哈希映射,查找出现次数为3的字符
        for (auto &x : map) {
            if (x.second == 3) { // 字符出现次数为3
                flag = true;
                break;
            }
        }

        // 输出结果
        if (flag == true)
            cout << "Yes" << endl; // 如果存在出现次数为3的字符,则输出"Yes"
        else
            cout << "No" << endl; // 如果不存在出现次数为3的字符,则输出"No"
    }

    return 0;
}

觉得有用的话可以点点赞,支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字符串进行 URL 编码处理

// URL_test.cpp : Defines the entry point for the console application. //#include "stdafx.h"#include <stdio.h> #include <stdlib.h> #include <string.h>// 判断字符是否需要进行 URL 编码 static bool needs_encoding(char c) {if ((c &g…

力扣第538题 把二叉搜索树转换为累加树 c++

题目 538. 把二叉搜索树转换为累加树 中等 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值…

相似性搜索:第 3 部分--混合倒排文件索引和产品量化

接续前文&#xff1a;相似性搜索&#xff1a;第 2 部分&#xff1a;产品量化 SImilarity 搜索是一个问题&#xff0c;给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 一、介绍 在数据科学中&#xff0c;相似性搜索经常出现在NLP领域&#xff0c;搜索引擎或推…

【RocketMQ系列二】通过docker部署单机RocketMQ

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

goland安装教程

安装版本&#xff1a; goland-2023.2.3.exe

(滑动窗口) 76. 最小覆盖子串 ——【Leetcode每日一题】

❓76. 最小覆盖子串 难度&#xff1a;困难 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串…

C语言 sizeof

定义 sizeof是C语言的一种单目操作符。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 使用方法 用于数据类型 sizeof(type) 数据类型必须用括号括住 用于变量 size…

C#,数值计算——数据建模Proposal的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Proposal { public Normaldev gau { get; set; } null; private double logstep { get; set; } public Proposal(int ranseed, double lstep) { this.gau…

OpenRemote: Java 开源 IoT 物联网开发平台,匹配智慧城市、智能家居、能源管理

OpenRemote 是一个直观、用户友好的基于Java语言的开源 IoT 物联网设备管理平台&#xff0c;它包括从连接设备到构建应用程序和特定领域的智能应用程序的所有功能和特性。通过OpenRemote物联网平台&#xff0c;用户可以收集和处理来自不同设备的传感器数据&#xff0c;适用于智…

办理400电话客服中心的申请步骤及注意事项

引言&#xff1a; 在现代商业环境中&#xff0c;提供优质的客户服务是企业成功的关键之一。而办理400电话客服中心可以帮助企业建立一个高效、专业的客户服务团队&#xff0c;提升客户满意度和忠诚度。本文将介绍办理400电话客服中心的申请步骤及注意事项&#xff0c;帮助企业顺…

java: 无效的目标发行版: 11

第一步&#xff1a; 第二步&#xff1a; 第三步

BGP初解笔记

BGP&#xff08;公网用得多&#xff09;&#xff1a; 一、名词&#xff1a; 1、BGP speaker&#xff1a;启用了BGP进程的路由器 2、BGP对等体&#xff1a;双方建立BGP邻居关系的设备&#xff1a; a.IBGP对等体&#xff0c;AS号一致&#xff0c;为IBGP对等体&#xff0c;有水…

如何做好商品的库存管理?哪些指标是衡量库存的指标

如何做好商品的库存管理&#xff1f;哪些指标是衡量库存的指标&#xff1f;库存分析的方法繁杂且广泛&#xff0c;选择正确的方法才能更好的进行库存分析。 本文将为大家盘点一些常用的库存分析方法和监控指标&#xff0c;全程干货&#xff0c;建议收藏&#xff01; 01 如何进…

网络编程中的重难点:套接字的应用和理解

什么是网络编程 网络编程&#xff0c;指的是网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff08;或成为网络数据传输&#xff09;。 发送端和接收端 在一次网络数据传输时&#xff1a; 发送端&#xff1a;数据的发送方进程&#xff0…

GD32F103 ADC

1. 模拟量于数字量。 模拟量&#xff1a;反应真实世界中的物理量&#xff08;比如温度&#xff0c;压力&#xff0c;长度&#xff09;模拟量通常是通过电压&#xff0c;电流等信号来表示。 数字量&#xff1a;通常是0和1来表示某个物理量的变化。 2. ADC&#xff08;模拟量转…

通过HTTP发送大量数据的三种方法

在网络的早期时期&#xff0c;人们发送的文件大小仅为几KB。到了2023年&#xff0c;我们享受着高分辨率的MB级别图像&#xff0c;并在几GB的4K&#xff08;即将是8K&#xff09;视频中观看。 即使有良好的互联网连接&#xff0c;下载一个5GB的文件仍然需要一些时间。如果你拥有…

Photoshop 2024正式发布!内置最新PS AI,创意填充等功能无限制使用!

PS正式版目前更新到了2024&#xff0c;版本为25.0。 安装教程 1、下载得到安装包后&#xff0c;先解压。鼠标右键&#xff0c;【解压到当前文件夹】 2、双击 Set-up 开始安装 3、这里可以更改安装位置。如果C盘空间不够大&#xff0c;可以把它安装到C盘以外。更改好后&#x…

SpringBoot面试题3:Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? Spring Boot 的核心注解是 @SpringBootApplication。 @SpringBootApplication 是一…

【idea】 java: 找不到符号

idea 启动时提示 java: 找不到符号 java: 找不到符号 符号: 方法 getCompanyDisputeCount() 位置: 类型为com.yang.entity.AreaAnalyse的变量 areaAnalyse 在setting ——> Compiler ——>Shared build process VM options: 添加&#xff1a; -Djps.track.ap.dep…

Vue3<script setup>语法糖下,实现父子组件通信以及数据监听的三种方法。

在Vue3的script setup语法糖中&#xff0c;没有办法通过Vue2的ref、props、parent、中央时间总线等等众多方法&#xff0c;通过this指针简单的实现父子组件的通信&#xff0c;网络上也很少有关于script setup语法糖的相关教程&#xff0c;所以决定自己写一个详细教程&#xff0…