题解 | #删除公共字符#
删除公共字符
https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212
#include <iostream>
#include <unordered_set>
#include <bitset>
using namespace std;
//哈希表(unordered_set)
// int main() {
// string str1;
// string str2;
// getline(cin, str1);
// getline(cin, str2);
// unordered_set<char> usc;
// for(char ch : str2)
// {
// usc.insert(ch);
// }
// for(size_t i = 0; i < str1.size();)
// {
// auto ret = usc.find(str1[i]);
// if(ret != usc.end())
// str1.erase(i, 1);
// else
// ++i;
// }
// cout << str1 << endl;
// }
//位图(bitset)
int main() {
string str1;
string str2;
getline(cin, str1);
getline(cin, str2);
bitset<128> bsc;
for(char ch : str2)
{
bsc.set(ch);
}
for(size_t i = 0; i < str1.size();)
{
if(bsc.test(str1[i]))
str1.erase(i, 1);
else
++i;
}
cout << str1 << endl;
}
解题思路:
将第二个字符串中的所有字符插入到哈希表(unordered_set)或位图中
遍历第一个字符串在哈希表或位图中查找字符,如果在就删除该字符,或者如果不在就将该字符插入到结果字符串。
