1033. 旧键盘打字(20)

来源:互联网 发布:高中毕业旅行知乎 编辑:程序博客网 时间:2024/04/29 15:24


时间限制
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

为什么我的不通过,别人可以

#include<stdio.h>#include<string.h>#define MAX 100009int main(){char a[MAX];gets(a); int m;m=strlen(a); char b[MAX];gets(b);int n;n=strlen(b);int i,j; if(0==m){puts(b); }else{int flag=0; for(i=0;i<m;i++){if(a[i]=='+'){flag=1;break; } } for(i=0;i<n;i++){if(flag==1 && b[i]>='A' && b[i]<='Z'){continue; } else{for(j=0;j<m;j++){if(b[i]==a[j] || b[i]==a[j]+32) {break; } }     if(j>=m)    {                    printf("%c",b[i]);                 }}  }printf("\n"); }return 0; } 






以下是别人的

#include <iostream>#include <cstdio>#include <cstring>using namespace std;bool brokenKeys[257];int main(){  // 存入坏键  char str[100005];  memset(brokenKeys, 0, sizeof(brokenKeys));//  scanf("%s",str);  gets(str); //scanf无法读入空串  for (int i = 0; str[i]; ++i) {    char ch = str[i];    brokenKeys[ch] = 1;    // 小写字母也无法打印    if (ch >= 'A' && ch <= 'Z') {      ch = ch - 'A' + 'a';      brokenKeys[ch] = 1;    }  }//  if(strlen(str)!=0)getchar();// 过滤换行符 使用scanf的时候需要过滤,使用gets则不需要    // 处理输入字符  char ch;  while(scanf("%c",&ch) != EOF){    // 判断这个符号能否打出来    if(brokenKeys[ch] == 0){            // 如果要打印大写字母,需要额外判断上档键      if (ch >= 'A' && ch <= 'Z' && brokenKeys['+'] == 1) {        continue;      }      cout << ch;    }  }  return 0;}



0 0