[每日一题] 2. 删除公共字符---编程题(模拟、字符串、哈希表)
发布日期:2021-05-12 23:13:41 浏览次数:20 分类:精选文章

本文共 607 字,大约阅读时间需要 2 分钟。

当处理需要从一个字符串中删除另一个字符串所有字符的任务时,我们可以使用哈希表来提高效率。

首先,读取输入

我们需要读取两个字符串,记为 str1str2

string str1, str2;getline(cin, str1);getline(cin, str2);

接下来,统计字符频率

使用一个大小为256的数组 hashtable 来记录 str2 中每个字符的出现次数。

int hashtable[256] = {0};for (size_t i = 0; i < str2.size(); ++i) {    hashtable[str2[i]]++;}

遍历 str1 拼接结果

然后,遍历 str1,对于每个字符,检查它在 hashtable 中的值。如果值为0,说明这个字符不在 str2 中,添加到结果字符串 ret 中。

string ret;for (size_t i = 0; i < str1.size(); ++i) {    if (hashtable[str1[i]] == 0) {        ret += str1[i];    }}

输出结果

最后,将结果字符串输出。

cout << ret << endl;return 0;

总结

这种方法利用哈希表将查找和统计操作结合在一起,时间复杂度为 O(n),空间复杂度为 O(1),非常高效,适合处理大规模的输入。

上一篇:[每日一题] 3. 排序子序列--编程题(贪心+模拟+思维)
下一篇:[数学建模] 3. 葡萄酒的评价

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月10日 13时36分04秒