题目描述
给定两个字符串 S1 和 S2,S=S1−S2 定义为将 S1 中包含的所有在 S2 中出现过的字符删除后得到的字符串。
你的任务就是计算 S1−S2。
输出格式
输出共一行,表示 S1−S2 的结果。
样例
输入样例:
They are students.
aeiou
输出样例:
Thy r stdnts.
算法1
在保利枚举的基础上,查询s1中是否有s2的字符串,现将s2插入到哈希表中,利用哈希表查找的效率为O(1),然后利用迭代器遍历s1中的每个字符在哈希表中是否重复,即哈希表中的s2与s1相等的字符个数是否大于0,如果大于0既有重复,那就不加入答案字符串数组中,否则则加入答案字符串数组。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2,res;
getline(cin,s1);
getline(cin,s2);
unordered_set<char> hash;
for(auto b:s2)
hash.insert(b);
for(auto c:s1)
{
if(!hash.count(c))
res+=c;
}
cout<<res<<endl;
return 0;
}