码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-07-13 06:50:24      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

1033. 旧键盘打字(20)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:

输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

输入样例:
7+IE.
7_This_is_a_test.
输出样例:
_hs_s_a_tst

 思路:‘+’和‘_’是关键,都要判断

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     char a[100010],b[100010];
 6     int aa[100010]= {0};
 7     gets(a);
 8     gets(b);
 9     int shift=0,blank=0;
10     int la=strlen(a);
11     int lb=strlen(b);
12     for(int i=0; i<la; i++)
13     {
14         aa[a[i]]=1;
15         if(islower(a[i]))
16         {
17             a[i]-=32;
18             aa[a[i]]=1;
19         }
20         else if(isupper(a[i]))
21         {
22             a[i]+=32;
23             aa[a[i]]=1;
24 
25         }
26         if(a[i]==+)
27             shift=1;
28         if(a[i]==_)
29             blank=1;
30 
31     }
32     for(int i=0; i<lb; i++)
33     {
34         if(shift)
35         {
36             if(!isupper(b[i])&&aa[b[i]]==0)
37                 cout<<b[i];
38         }
39         else if(blank){
40             if(b[i]!= &&aa[b[i]]==0)
41             cout<<b[i];
42         }
43         else
44         {
45             if(aa[b[i]]==0)
46                 cout<<b[i];
47         }
48     }
49     return 0;
50 }

 

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

标签:

原文地址:http://www.cnblogs.com/zhien-aa/p/5665506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!