#include<bits/stdc++.h>
using namespace std;
int main()
{
string str_1, str_2;
getline(cin, str_1);
getline(cin, str_2);
//set的初始化
unordered_set<char>set_2(str_2.begin(), str_2.end());
//因爲程序中,需要刪除string中的元素,刪除string的元素之後的迭代器會失效,
for (auto it=str_1.begin(); it!=str_1.end(); )
{
if (set_2.find(*it) != set_2.end())
{
//刪除元素之後,it會停留在原位置,因爲,string是順序容器,所以後面的元素會補上,it不做遞增,繼續處理
//如果是刪除的時候關聯容器的話,因爲刪除之後,元素間不是連續的,後面的元素不會增上來,所以it需要遞增
str_1.erase(it);
//res+=*it;
}
else it++;
}
cout << str_1<< endl;
return 0;
}
轉換思維,增加空間,新建一個string,
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str_1, str_2;
getline(cin, str_1);
getline(cin, str_2);
//cout << str_1 << endl;
//cout << str_2 << endl;
string res;
unordered_set<char>set_2(str_2.begin(), str_2.end());
for (auto it=str_1.begin(); it!=str_1.end(); it++)
{
if (set_2.find(*it) == set_2.end())
{
//str_1.erase(it);
res+=*it;
}
}
cout << res << endl;
return 0;
}