关于算法-数据结构:PAT甲级1084-Broken-Keyboard

34次阅读

共计 660 个字符,预计需要花费 2 分钟才能阅读完成。

题目粗心:

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

算法思路:

咱们能够应用 notBroken 记录哪些字符是好的键,在输出 s1s2的时候,首先变量 s2, 将s2 的字符全副记录为好键,notBroken[s2[i]] = true,而后遍历 s1, 对于在notBroken 中显示 s1 的字符不是好键的就进行输入,然而因为只输入一次,所以在输入结束后,就将其记录为好键。

留神点:
1、对于英文字符要转换为大写字母
提交后果:

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

正文完
 0