PAT Basic 1029
2024-09-06 09:26:16
1029 旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。
输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。
输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI
题解:这道题并不是很难,标记坏键是否输出过既可以用set,map,也可以自己用一个bool类型的数组来表示(这样写可能略微麻烦了,但是因为是用数组,可以直接存取,按理说效率要高一些,当然,需要空间也较大,其实是一种哈希的写法了,在后面那道旧键盘打字的题目中,我会详细用代码写出来)。
同时遍历两个字符串,如果发现不相同的字符,即为坏键,判断该坏键是否输出后,再进行操作即可。
知识点复习:c++中可以使用toupper(小转大)和tolower(大转小)自动进行大小写转化,非字母自动略过,OJ题目里面还是非常方便的。
代码如下:
#include<iostream>
#include<string>
#include<set> using namespace std; int main()
{
string a, b;
int i, j;
set<char> c;
cin>>a>>b;
for( i = , j = ; i < a.length() && j < b.length(); i++){
if( a[i] == b[j])
j++;
else{
if( c.count(toupper(a[i])) != ){
printf("%c",toupper(a[i]));
c.insert(toupper(a[i]));
}
}
}
while( i < a.length()){
if( c.count(toupper(a[i])) != ){
printf("%c",toupper(a[i]));
c.insert(toupper(a[i]));
}
i++;
}
return ;
}
最新文章
- MVC4做网站后台:用户管理 ——用户组 1、添加用户组
- java第四次作业
- 攻城狮在路上(叁)Linux(二十)--- Linux磁盘格式化
- web安全之sql注入联合查询
- [HTML] CSS3 文本效果
- Android with Eclipse - Waiting for HOME (&#39;android.process.acore&#39;) to be launched?
- Fancy
- Effective Java设定游戏 - 就是爱Java
- Java进阶(二十五)Java连接mysql数据库(底层实现)
- windows资源管理器(只能看,不能用)
- 华硕ASUSPRO P5440UA笔记本电脑安装驱动
- log4j入门
- IE8以下浏览器设置Title的问题
- 伪AJAX
- unity缓动插件DOTween Pro v0.9.680
- 01.Java 开发简单的计算器
- Android 耳机插入过程分析
- 使用Astah画UML类图经验总结
- 1001. 温度转换 (Standard IO)
- java中介者模式