旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:7+IE. 7_This_is_a_test.输出样例:
_hs_s_a_tst
#include<iostream>
#include<string>
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
for(string broken,output;getline(cin,broken)&&getline(cin,output);){
int word[26]={0};
int number[10]={0};
int sign[5]={0};//以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)
for(int i =0;i<broken.length();i++){
if(broken[i] >= '0'&& broken[i] <= '9'){
number[broken[i] - '0']++;
}else if(broken[i] >= 'A'&& broken[i] <= 'Z'){
word[broken[i] - 'A']++;
}else{
switch (broken[i])
{
case '_':
sign[0]++;
break;
case ',':
sign[1]++;
break;
case '.':
sign[2]++;
break;
case '-':
sign[3]++;
break;
case '+':
sign[4]++;
break;
default:
break;
}
}
}
for(int i =0;i < output.length();i++){
if(output[i] >= '0' && output[i] <= '9'){
if(!number[output[i] - '0']){
cout<<output[i];
}
}else if(output[i] >= 'a' && output[i] <= 'z'){
if(!word[output[i] - 'a']){
cout<<output[i];
}
}else if(output[i] >= 'A' && output[i] <= 'Z'){
if(!word[output[i] - 'A'] && !sign[4]){
cout<<output[i];
}
}else{
switch (output[i])
{
case '_':
if(!sign[0]){
cout<<output[i];
}
break;
case ',':
if(!sign[1]){
cout<<output[i];
}
break;
case '.':
if(!sign[2]){
cout<<output[i];
}
break;
case '-':
if(!sign[3]){
cout<<output[i];
}
break;
case '+':
if(!sign[4]){
cout<<output[i];
}
break;
default:
break;
}
}
}
cout<<endl;
}
return 0;
}
/*考虑第一行输入为空行的情况*/