给定两个字符串 S1 和 S2,S=S1−S2 定义为将 S1 中包含的所有在 S2 中出现过的字符删除后得到的字符串。
你的任务就是计算 S1−S2。
输入格式
共两行,第一行包含字符串 S1,第二行包含字符串 S2。
输出格式
输出共一行,表示 S1−S2− 的结果。
数据范围
两个给定字符串的长度都不超过 10000。
输入样例:
They are students.
aeiou
输出样例:
Thy r stdnts.
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
string str1;
string str2;
int main(){
getline(cin, str1);
getline(cin, str2);
unordered_set<char> hash;
for(auto c:str2) hash.insert(c);
string res;
for(auto c:str1)
if(!hash.count(c))
res+=c;
cout<<res<<endl;
return 0;
}
字符串输入方式
cin 使用空白(空格、制表符、换行符)来确定字符串的位置
getline(cin, str) 接收一个字符串,包括空格与Tab键
哈希表 参考此博客
unordered_set
构造方式
unordered_set<int> us1; //构造int类型的空容器 unordered_set<int> us2(us1); //拷贝构造同类型容器us1的复制品 string str("abcedf"); unordered_set<char> us3(str.begin(), str.end()); //构造string对象某段区间的复制品