pat 乙级 1029 旧键盘(C++)

题目

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

输入格式:

输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。

输出格式:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。

输入样例:

7_This_is_a_test
_hs_s_a_es

输出样例:

7TI

分析

  • 应该输入的文字设为s1,实际被输入的文字设为s2。
  • 如果键没坏,那么在s1中出现的s2中一定会出现。找坏键,排除没坏的情况就可以了。但是要注意,结果里不能有重复的两个键。
  • 方法1:在s2中遍历在s1中的每一个字符,如果相等则停止进行下一轮比较;如果直到s2结束都没找到相等的,再看结果字符串中之前是否已经存入这个键,如果没有则放入,否则舍弃。
  • 方法2:使用string类的find函数以及c的tuopper函数,这个方法是柳神找到的。柳婼 の blog
  • 本题由于字符个数较少,所以两种方法耗时差不多,但柳神姐姐的代码好简洁!系统提供了函数的一定要用系统的,因为一是方便而且代码简洁,二是官方给的函数效率一般都比我们自己写的要好,太香了。

AC代码

方法1代码

#include<iostream>
#include<string>
using namespace std;
int main()
{string s1,s2,result;int i,j,k,len1,len2;cin>>s1>>s2;len1=s1.length();len2=s2.length();for(i=0;i<len1;i++){for(j=0;j<len2;j++){if(s1[i]==s2[j])//如果s1中有字符在s2中出现,改键没有坏{break;}if(j==len2-1) {int flag=0;//作为本次比较中坏键之前是否已被记录的标志for(k=0;k<result.length();k++)//判断坏键是否已记录{if(s1[i]>='a'&&s1[i]<='z'){if(s1[i]-('a'-'A')==result[k]){flag=1;break;}}if(result[k]==s1[i]){flag=1;break;}	}if(flag==0)//坏键且没有被记录过{if(s1[i]>='a'&&s1[i]<='z')//小写字母需要大写result+=s1[i]-('a'-'A');//ASCII码else    //非小写字母直接记录result+=s1[i];	}}}}cout<<result;return 0;
}

方法2代码

#include <iostream>
#include <cctype>
using namespace std;
int main() {string s1, s2, ans;cin >> s1 >> s2;for (int i = 0; i < s1.length(); i++)if (s2.find(s1[i]) == string::npos && ans.find(toupper(s1[i])) == string::npos)ans += toupper(s1[i]);cout << ans;return 0;
}

方法2注解

  • find函数:多种重载,本处使用的是
  • size_type find(const char ch, size_type pos = 0) const,从字符串的pos位置开始,查找字符ch。如果找到,则返回该字符首次出现的位置;否则,返回string::npos。
  • size_type:是用来描述string或者vector等容器长度的数据类型,一般认为是unsigned int。
  • string::npos的值不同机器可能有差异,我的机器(64位)测试:是unsigned long的最大值:18446744073709551615
  • int toupper(int c):如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则返回c本身。返回值是一个可被隐式转换为 char 类型的 int 值。

方法2参考:
1029. 旧键盘(20)-PAT乙级真题

更多题解

pat 乙级(Basic Level) 题解汇总(持续更新)(C++)

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

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

相关文章

1.0jpa 2.0_JPA 2.1类型转换器–持久枚举的更好方法

1.0jpa 2.0可以使用JPA 2.0保留枚举&#xff0c;但是没有很好的方法来实现。 使用Enumerated批注&#xff0c;可以使用EnumType.ORDINAL或EnumType.STRING将枚举值映射到其数据库表示形式。 但是这两种选择都有一些缺点&#xff0c;我们将在本文的第一部分中进行讨论。 在第二部…

从网络虚拟化,看智能网卡发展史

5G的到来无疑将加速网络虚拟化的进程&#xff0c;在电信领域&#xff0c;网络虚拟化不仅在核心网&#xff0c;也在网络的边缘。但是&#xff0c;仅仅通过软件解决方案不能提供足够的网络可靠性和服务质量&#xff0c;而具有高级可编程功能智能网卡&#xff08;Smart NIC&#x…

Dev-C++使用技巧2(亲测)(更改字体和颜色、自动保存、快捷键选项、一键排版)

更改字体和颜色 顶部菜单栏->工具->编辑器选项。 更改字体 当前选项卡->显示&#xff0c;字体word有的基本都有&#xff0c;华文楷体、宋体&#xff0c;幼圆之类。西文字体默认字体Consloas就不错&#xff0c;中文的话幼圆、新宋体都挺不错。 幼圆效果&#xff1…

Java恶意序列化背后的历史和动机

与Java的序列化机制有关的问题已广为人知。 有效的Java 1st Edition &#xff08;第10章&#xff09;和有效的Java 2nd Edition &#xff08;第11章&#xff09;的整个最后一章都专门讨论Java的序列化主题。 Effective Java 3rd Edition &#xff08;第12章&#xff09;的最后一…

深入浅出全面解析RDMA

RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问&#xff0c;就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机&#xff0c;无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信&#xff0c;…

pat 乙级 1030 完美数列(C++)

题目 给定一个正整数数列&#xff0c;和正整数 p&#xff0c;设这个数列中的最大值是 M&#xff0c;最小值是 m&#xff0c;如果 M≤mp&#xff0c;则称这个数列是完美数列。 现在给定参数 p 和一些正整数&#xff0c;请你从中选择尽可能多的数构成一个完美数列。 输入格式&…

hypervisor介绍

hypervisor&#xff1a;一种运行在物理服务器和操作系统之间的中间层软件&#xff0c;可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统&#xff0c;可以协调访问服务器上的所有物理设备和虚拟机&#xff0c;所以又称为虚拟…

pat 乙级 1031 查验身份证(C++)

题目 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;2&#xff0…

Selenium WebDriver中的TestNG侦听器及示例

Java提供了不同的接口&#xff0c;使您可以修改TestNG行为。 这些接口在Selenium WebDriver中进一步称为TestNG侦听器。 TestNG Listeners还允许您根据项目要求自定义测试日志或报告。 Selenium WebDriver中的TestNG侦听器是侦听某些事件并跟踪测试执行情况的模块&#xff0c;…

pat 乙级 1032 挖掘机技术哪家强(C++)

题目 为了用事实说明挖掘机技术到底哪家强&#xff0c;PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。 输入格式&#xff1a; 输入在第 1 行给出不超过 105 的正整数 N&#xff0c;即参赛人数。随后 N 行&#xff0c;每行给出一位参赛者的信息…

Ubantu键盘快捷键

Ubuntu系统 长按"Win"键可打开快捷键提示界面

win10安装python详细过程

关于python的安装 一切语言皆为工具接下来咱们就开始吧一切语言皆为工具 既然你决定安装它&#xff0c;那就已经告知自己要掌握这门工具&#xff0c; 但是有一定你一定要铭记于心那就是&#xff1a; python 是个工具时刻想着如何用它解决你的问题【哪怕是一个简单的想法】 接…

Spring Boot中的@SpringBootConfiguration注释

Spring Boot中的 SpringBootConfiguration注释是一个类级别的注释&#xff0c;它指示此类提供了应用程序配置。 通常&#xff0c;具有main&#xff08;&#xff09;方法的类最适合此注释。 我们通常使用SpringBootApplication批注&#xff0c;该批注会自动继承SpringBootConf…

第18次csp认证 201912-1 报数(C++)

题目 分析 需要跳过的包括&#xff1a;7的倍数和包括7的数。跳过的同时n要加一&#xff08;总的报n个数&#xff0c;跳过的不算&#xff09;。声明一个全局数组count[4]方法1&#xff1a;i1开始到n&#xff0c;把输入的i转化为字符串&#xff0c;然后在字符串里找’7’或者7的…

C++ vector求均值和方差

1 定义 &#xff08;1&#xff09;均值 &#xff08;2&#xff09;方差 &#xff08;3&#xff09;标准差 2 代码实现 //std::vector< double> 或者 std::vector< int> 类型变量求均值和方差 #include <numeric> #include <iostream> #include <m…

第18次csp认证 201912-2 回收站选址(C++)

题目 分析 每一个垃圾堆放处都可能是回收站&#xff0c;所以两轮循环&#xff0c;找出所有可以成为回收站的坐标。再两轮循环&#xff0c;确定所有回收站的得分最后输出每种得分的回收站个数 AC代码 #include <iostream> #include<string> using namespace std;…

Python——列表中存放字典遇到的问题

Python——列表中存放字典遇到的问题 使用列表、字典之间的相互嵌套可以很容易的实现json数据格式&#xff0c;但是昨天在往列表中装入字典时遇到了问题&#xff1a; 直接使用append方法将字典添加到列表中&#xff0c;如果需要更改字典中的数据&#xff0c;那么列表中的内容也…

jpa 返回数据转换_如何使用JPA类型转换器加密数据

jpa 返回数据转换几天前&#xff0c;我读了Bear Giles关于2012年使用JPA监听器进行数据库加密的有趣文章。他讨论了对加密解决方案的要求&#xff0c;并提供了JPA监听器的代码示例。 他的主要要求是&#xff1a; 提供不影响应用程序的透明加密&#xff0c; 能够在部署时添加加…

pat 乙级 1036 跟奥巴马一起编程(C++)

题目 美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形…

使用Jmeter的Websocket:获取性能数字

问题&#xff1a; 我最近遇到了一个问题&#xff0c;该问题需要针对多个用户测试SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本质上是异步的&#xff0c;因此它比常规的http / https请求-响应测试更加棘手。 解&#xff1a; 好了&#xff0c;无需解释为什么Jm…