题目大意:
给定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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。