📌  相关文章
📜  在字符串c ++中查找没有唯一字符(1)

📅  最后修改于: 2023-12-03 14:51:25.988000             🧑  作者: Mango

在 C++ 中查找没有唯一字符

有时候,在字符串中需要查找出现次数不为 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 的字符。希望这篇介绍能帮助你解决自己的问题。