我真的是有一个不仔细看题的“好习惯”啊
# include <iostream>
# include <unordered_map>
using namespace std;
string S;
string T;
// 在遍历字符串的时候
/* 加上这一句将小写字符转换为大写字符
if(ch >= 'a' && ch <= 'z')
ch = 'A' + (ch-'a');
*/
int main()
{
unordered_map<char, int> mS;
unordered_map<char, int> mT;
cin >> S >> T;
for(char ch: S){
if(ch >= 'a' && ch <= 'z')
ch = 'A' + (ch-'a');
mS[ch]++;
}
mT = mS;
for(char ch: T){
if(ch >= 'a' && ch <= 'z')
ch = 'A' + (ch-'a');
mT[ch]--;
}
unordered_map<char, bool> check; // 检查是否重复
// 检查mT中的是否有元素的出现此处和mS中一样,一样的话说明这个键肯定坏掉了!!!
for(char ch: S){
if(ch >= 'a' && ch <= 'z')
ch = 'A' + (ch-'a');
if(mT[ch] == mS[ch] && check[ch] == false){
check[ch] = true;
cout << ch;
}
}
return 0;
}
柳神的……妙……
#include <iostream>
#include <cctype>
using namespace std;
int main() {
string s1, s2, ans;
cin >> s1 >> s2;
for (int i = 0; i < s1.length(); i++)
if (s2.find(s1[i]) == string::npos && ans.find(toupper(s1[i])) == string::npos)
ans += toupper(s1[i]);
cout << ans;
return 0;
}