题目粗心:
给定 2 个字符串,第一个字符串为输出的字符串,第二个字符串为输入字符串,依据没有输入的字符,输入坏掉的键
算法思路:
咱们能够应用 notBroken
记录哪些字符是好的键,在输出 s1
和s2
的时候,首先变量 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;
}