PAT Basic 1029

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题目里面还是非常方便的。

代码如下:
 1 #include<iostream>
 2 #include<string>
 3 #include<set>
 4
 5 using namespace std;
 6
 7 int main()
 8 {
 9     string a, b;
10     int i, j;
11     set<char> c;
12     cin>>a>>b;
13     for( i = 0, j = 0; i < a.length() && j < b.length(); i++){
14         if( a[i] == b[j])
15             j++;
16         else{
17             if( c.count(toupper(a[i])) != 1 ){
18                 printf("%c",toupper(a[i]));
19                 c.insert(toupper(a[i]));
20             }
21         }
22     }
23     while( i < a.length()){
24         if( c.count(toupper(a[i])) != 1){
25             printf("%c",toupper(a[i]));
26             c.insert(toupper(a[i]));
27         }
28         i++;
29     }
30     return 0;
31 }
 

原文地址:https://www.cnblogs.com/yxp400/p/9457558.html

时间: 2024-08-10 09:24:13

PAT Basic 1029的相关文章

PAT (Basic Level) Practise (中文) 1005

1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候,我们需要计算3.5.8.4.2.1,则当我们对n=5.8.4.2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重

PAT (Basic Level) Practise (中文)1004. 成绩排名 (20)

读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的. 输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低

PAT Basic 1057 数零壹 (20 分)

给定一串长度不超过 1 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0.4 个 1. 输入格式: 输入在一行中给出长度不超过 1.以回车结束的字符串. 输出格式: 在一行中先后输出 0 的个数和 1 的个数,其间以空格分隔

PAT (Basic Level) Practise 1040 有几个PAT(DP)

1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多少个PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含P.A.T三种字母. 输出格式: 在一行中输出给定字符串中

PAT (Basic Level) Practise 1003. 我要通过!

1003. 我要通过! 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符:2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是

PAT 乙级 1029 旧键盘(20) C++版

1029. 旧键盘(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过80个字符的串,由字母A-Z(包括大.小写).数字0-9.以及下划线"_"(代表空格)组成.题目保

PAT (Basic Level) Practise:1040. 有几个PAT

[题目链接] 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多少个PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含P.A.T三种字母. 输出格式: 在一行中输出给定字符串中包含多少个PAT.由于结果可能比较大,只输出对1000000007取余数的结果. 输入样例: APPAPT 输出样例: 2 提交代码: 1 #includ

PAT Basic 1032

1032 挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10^5^的正整数N,即参赛人数.随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号).及其比赛成绩(百分制),中间以空格分隔. 输出格式: 在一行中给出总得分最高的学校的编号.及其总分,中间以空格分隔.题目保证答案唯一,没有并列. 输入样例: 6 3 65 2 80 1 100 2 70

PAT Basic 1085

1085 PAT单位排行 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10?5??),即考生人数.随后 N 行,每行按下列格式给出一个考生的信息: 准考证号 得分 学校 其中准考证号是由 6 个字符组成的字符串,其首字母表示考试的级别:B代表乙级,A代表甲级,T代表顶级:得分是 [0, 100] 区间内的整数:学校是由不超过 6 个英文字母组成的单位码(大小写无关).注意:题目保证每个考生的准考证号是不同的.