目录
牛客_删除公共字符
法一代码(暴力)
法二代码(哈希)
牛客_删除公共字符
删除公共字符__牛客网
法一代码(暴力)
暴力查找方式,如判断第一个串的字符是否在第二个串中,在再挪动字符删除这个字符的方式,效率为O(N^2),效率太低,很难让人满意。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1, s2, ret = "";getline(cin, s1);getline(cin, s2);for (auto& e : s1){if (s2.find(e) == s2.npos){ret += e;}}cout << ret;return 0;
}
法二代码(哈希)
将第二个字符串的字符都映射到一个hashtable数组中,用来判断一个字符在这个字符串。 判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可以考虑使用将不在字符添加到一个新字符串,最后返回新字符串。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1, s2, ret = "";getline(cin, s1);getline(cin, s2);int hash[256] = {0};for(auto& e : s2){hash[e]++;}for(auto& e : s1){if(hash[e] == 0){ret += e;}}cout << ret << endl;return 0;
}