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;
}

 

posted @ 2020-02-18 16:33  tangq123  阅读(172)  评论(0编辑  收藏  举报