目录
牛客_删除公共字符
法一代码(暴力)
暴力查找方式,如判断第一个串的字符是否在第二个串中,在再挪动字符删除这个字符的方式,效率为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;
}