📅  最后修改于: 2023-12-03 14:51:25.988000             🧑  作者: Mango
有时候,在字符串中需要查找出现次数不为 1 的字符。这个问题可以通过使用哈希表来解决。下面是一个简单的 C++ 实现。
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
std::string s = "Hello, world!";
std::unordered_map<char, int> charCounts;
// 遍历字符串并记录每个字符出现的次数
for (char c : s) {
++charCounts[c];
}
// 遍历哈希表并输出出现次数不为 1 的字符
for (const auto& entry : charCounts) {
if (entry.second != 1) {
std::cout << entry.first << " appears " << entry.second << " times.\n";
}
}
return 0;
}
该代码段使用了 std::unordered_map
,这是一个基于哈希表的 STL 容器。我们遍历字符串,并记录每个字符出现的次数。然后遍历哈希表,找到出现次数不为 1 的字符并输出。
哈希表的插入、查找和删除操作都具有 O(1) 的平均时间复杂度。因此,该算法的时间复杂度为 O(n),其中 n 是字符串的长度。空间复杂度为 O(k),其中 k 是字符串中不同字符的数量。
通过使用哈希表,我们可以有效地查找字符串中出现次数不为 1 的字符。希望这篇介绍能帮助你解决自己的问题。