1033 旧键盘打字
注意点:
一,下划线 _
(代表空格),接收输入是真的空格,所以要用getline接收一行输入。
二,判断大写字母能否输出,必须同时上档键+和小写字母的键都未坏。
#include<iostream> #include<cctype> using namespace std; string str1,str2; bool hashtable[300] = {false}; int main() { getline(cin,str1);//测试样例2通不过,因为输入有多个空格 getline(cin,str2); bool flag = false;//flag表示坏键 +是否存在 for(int i = 0; i < str1.size(); ++i) if(str1[i] == '+') flag = true; else { if(isupper(str1[i])) str1[i]+=32;//大写字母转小写字母 hashtable[str1[i]] = true;//标记为坏键 } for(int i = 0; i < str2.size(); ++i) { if(isupper(str2[i])) { //如果是大写字母 if(flag == false && hashtable[str2[i]+32] == false)//要同时满足上档键和小写字母未坏 cout<<str2[i]; } else { if(hashtable[str2[i]] == false)//其他字符 cout<<str2[i]; } } return 0; }