PAT Basic 1033
Posted yxp400
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT Basic 1033相关的知识,希望对你有一定的参考价值。
1033 旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 10?5?? 个字符的串。可用的字符包括字母 [a
-z
, A
-Z
]、数字 0
-9
、以及下划线 _
(代表空格)、,
、.
、-
、+
(代表上档键)。题目保证第 2 行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:
7+IE.
7_This_is_a_test.
输出样例:
_hs_s_a_tst
题解:这道题目和旧键盘那道题非常相似,都需要标记坏键,前文中有说过,标记坏键可以用map,set或是自己写一个哈希方法来标记坏键,这道题我用哈希方法具体给大家展示。
读入两个字符串后,记录下坏键的位置,输出时,若为坏键不输出即可。
代码如下:
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() 7 { 8 bool a[256] = {false}; 9 string ac, b; 10 bool flag = false; 11 getline(cin,ac); 12 getline(cin,b); 13 for( int i = 0; i < ac.length(); i++){ 14 a[toupper(ac[i])] = true; 15 if( ac[i] == ‘+‘) 16 flag = true; 17 } 18 for( int i = 0; i < b.length(); i++){ 19 if( !flag ){ 20 if(!a[toupper(b[i])]) { 21 cout<<b[i]; 22 } 23 } 24 else{ 25 if( b[i] >= ‘A‘ && b[i] <=‘Z‘) 26 continue; 27 if(!a[toupper(b[i])]){ 28 cout<<b[i]; 29 } 30 } 31 } 32 return 0; 33 }
以上是关于PAT Basic 1033的主要内容,如果未能解决你的问题,请参考以下文章