题目

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

输入格式:

输入在 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++)

pat 乙级 1029 旧键盘(C++)相关推荐

  1. PAT乙级 1029 旧键盘 (20 分)

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 原题链接 代码 #inc ...

  2. [PAT乙级]1029 旧键盘

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

  3. PAT乙级 1029 旧键盘

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

  4. PAT乙级(1029 旧键盘)

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

  5. PAT 乙级 1029. 旧键盘(20) Java版

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

  6. PAT乙级(1033 旧键盘打字)

    PAT乙级 1033旧键盘打字 题目描述 解题代码 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入的文字.其中对应英文字母的坏键以大写给出:每段文字是不超过 10​5​​ 个字符的串. ...

  7. C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...

  8. pat 乙级 1033 旧键盘打字(C++)

    题目 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应 ...

  9. pat 乙级1033 旧键盘打字(20)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字. 以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在2行中分别给出坏掉的那些键.以及应该输入的文字 ...

最新文章

  1. python之抽象基类
  2. Grub 修复(文件损坏)有备份
  3. pybind11向C++ dll 传递数组 图像
  4. [转载]安装Oracle11gR2先决条件检查失败的详细解决处理过程
  5. iospython开发工具_使用Python开发iOS程序
  6. Js实现类似PHP中的in_array方法
  7. 深入分析AsyncTask
  8. WPS图片精简版 Ver.3.0.5
  9. matlab实现Sobel边缘检测
  10. 通过表面分析评估 Cu-CMP 工艺
  11. [RK3399][Android7.1.1]系统强制App横屏显示
  12. 点云 ICP学习-IterativeClosestPoint
  13. OLED电视与量子点电视,谁更值得买?
  14. 后台可视化布局打印设计
  15. Emlog程序CYP音乐主题模板源码
  16. 总结10个Python赚钱的接单平台 兼职月入5000+
  17. 我是这样克服拖延症的,你也可以试试
  18. Ubuntu20.04安装有道词典记录
  19. ETSI 开源MANO项目宣布发布Release 2
  20. 惹某第8周周记(习题+感悟)

热门文章

  1. 实践中的事件源和CQRS
  2. 使用Spring Security和jdbc的Spring Boot
  3. 装饰者模式如何拯救了我的一天
  4. 在Java中对Singleton类进行双重检查锁定
  5. AmazonSQS和Spring用于消息传递队列
  6. 具有内部类构造函数参数的Java Reflection奇数
  7. Java中Comparator和Comparable之间的区别
  8. 在MySQL数据库上使用Quartz Scheduler入门
  9. 使用多种MIME类型测试REST
  10. JavaOne 2012:观察与印象