gpt4 book ai didi

c++ - 为字符串中的每个字符(不是字符位置!)分配唯一索引

转载 作者:行者123 更新时间:2023-11-27 22:33:51 24 4
gpt4 key购买 nike

我正在尝试为 UTF32 字符串中的字符分配一个介于 0 和 N 之间的唯一索引(其中 n 是字符串中唯一字符的数量)。

例如,如果我有字符串“hello”,函数的输出将是:

'h' = 0
'e' = 1
'l' = 2
'o' = 3

字符串“hello”中有 4 个不同的字符,因此输出需要介于 0 和 3 之间。

我知道这可以很容易地使用哈希表来完成,甚至是最小的完美哈希。我很好奇是否有更有效的方法来处理此任务,因为我只需要将单个字符映射到单个输出值(例如,我不需要散列整个字符串)。正因为如此,使用像 std::map 这样的东西似乎有点矫枉过正,但是我一直没能找到任何可以更快地初始化或评估的替代方案(尽管我想你可以把字符放在排序数组并使用二进制搜索查找它们)。

最佳答案

我可能会使用哈希表(以 std::unordered_set 的形式)来存储唯一字母,然后在需要输出时使用一个简单的计数器。

有点像

std::string str = "hello";

std::unordered_set<char> chars(begin(str), end(str));
std::size_t counter = 0;
for (char c : chars)
std::cout << '\'' << c << "' = " << counter++ << '\n';

关于c++ - 为字符串中的每个字符(不是字符位置!)分配唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57373868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com