这是一个简单题, 用map做比较简单
#include <bits/stdc++.h>
using namespace std;
set<char> s;
map<char, int> mapp;
map<char, int> mapp2;
int main() {
string a, b;
cin >> a >> b;
for (int i = 0; i < a.size(); i++) {
bool f = 1;
if (mapp[a[i]] != 1) {
for (int j = 0; j < b.size(); j++) {
if (a[i] == b[j]) f = 0;
}
if (f == 1) {
char q = toupper(a[i]);
if (mapp2[q] != 1) {
cout << q;
mapp2[q] = 1;
}
mapp[a[i]] = 1;
}
}
}
return 0;
}
再来看一下更简单的解法:
这个学到的是string::npos这个用法,当在一个string串里查找不到指定字符的时候会返回一个string::npos.
#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;
}