1
题目大意:

给定2个字符串,第一个字符串为输入的字符串,第二个字符串为输出字符串,根据没有输出的字符,输出坏掉的键

算法思路:

我们可以使用notBroken记录哪些字符是好的键,在输入s1s2的时候,首先变量s2,将s2的字符全部记录为好键,notBroken[s2[i]] = true,然后遍历s1,对于在notBroken中显示s1的字符不是好键的就进行输出,但是由于只输出一次,所以在输出完毕后,就将其记录为好键。

注意点:
1、对于英文字符要转换为大写字母
提交结果:

截屏2020-10-13 上午9.12.09.png

AC代码:
#include <unordered_map>
#include <iostream>

using namespace std;

int main()
{
    string s1,s2;
    cin>>s1>>s2;
    unordered_map<char,bool> notBroken;
    for (int i = 0; i < s2.size(); ++i) {
        // 首先将小写字母转化为大写字母
        if(s2[i]>='a'&&s2[i]<='z'){
            s2[i] = s2[i] - 32;
        }
        notBroken[s2[i]] = true;//s2字符串的字符都是好键
    }
    for (int i = 0; i < s1.size(); ++i) {
        // 首先将小写字母转化为大写字母
        if(s1[i]>='a'&&s1[i]<='z'){
            s1[i] = s1[i] - 32;
        }
        if(!notBroken[s1[i]]){
            printf("%c",s1[i]);
        }
        // 表示已经输出过了
        notBroken[s1[i]] = true;
    }
    return 0;
}

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得