给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。
输入在两行中分别给出 A 和 B。
在一行中输出题面要求的 A 和 B 的和。
A 和 B 均为长度不超过${10}^6$的、由可见 ASCII 字符和空格组成的、由回车标识结束的非空字符串。
由于 ASCII 码只有 128 位,可以定义 bitset<128>类型变量 h 来记录字符是否出现过。然后遍历 A 和 B 两个字符串,输出第一次出现的字符并随时更新 h 即可。
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
string s;
bitset<128> h;
while (getline(cin, s)) {
for (char c : s) {
if (not h[c]) {
h[c] = true;
cout << c;
}
}
}
return 0;
}