题解 | #删除公共字符#
删除公共字符
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)或位图中
遍历第一个字符串在哈希表或位图中查找字符,如果在就删除该字符,或者如果不在就将该字符插入到结果字符串。