Programming Ability Test学习 1033. 旧键盘打字(20)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<map> #define MAXSIZE 100005 using namespace std; bool ifAdd(char *ss); // void ChangeSmall(char *ss,char *ss1) { if(ifAdd(ss1)==true) { int i=0; while(ss[i]!='\0') { if(ss[i]>='A'&&ss[i]<='Z') { ss[i]='*'; } i++; } } } //判断是否有'+' bool ifAdd(char *ss) { int i=0;int k=0; while(ss[i]!='\0') { if(ss[i]=='+'){k=1;break;} else i++; } if(i>=strlen(ss))return false; else return true; } // void Read(char *ss,char *ss1) { int kk=0; int a[MAXSIZE]={0}; for(int i=0;ss[i];i++) { a[ss[i]-0]=1; if(ss[i]>='A'&&ss[i]<='Z') a[ss[i]+32-0]=1; if(ss[i]>='a'&&ss[i]<='z') a[ss[i]-32-0]=1; } for(int j=0;ss1[j];j++) { if(a[ss1[j]-0]==1){ss1[j]='*';kk++;} } if(kk==strlen(ss1))cout<<endl;//判断是否是空行,即全部是'*' else{ int k=0; while(ss1[k++]!='\0'){ if(ss1[k-1]!='*') cout<<ss1[k-1]; } cout<<endl; } } int main() { char ss[MAXSIZE]; gets(ss); char ss1[MAXSIZE]; gets(ss1); ChangeSmall(ss1,ss); //cout<<ss1<<endl; Read(ss,ss1); return 0; }