解题步骤:
可以使用两层for循环,外层遍历s1字符串取字符,内层遍历s2字符串查看字符是否合法,但这样可能超时。
1、先遍历s2,把其出现的字符都存到一个哈希表中;
2、遍历s1,若字符在哈希表中出现,就删掉;若没有出现,加入到新字符串中。
代码实现:
#include <iostream>
#include <string>
using namespace std;
#include <unordered_set>
int main()
{
string s1, s2;
getline(cin, s1);
getline(cin, s2);
unordered_set<int> hash;
for (int i = 0; i < s2.size(); i++)
{
hash.insert(s2[i]);
}
string ans;
for (int i = 0; i < s1.size(); i++)
{
if (hash.count(s1[i]))
{
continue;
}
ans += s1[i];
}
cout << ans;
return 0;
}