c++ - 字符串数据的哈希函数

标签 c++ string hash

我正在使用 C++ 语言处理哈希表,我需要一个用于字符串数据的哈希函数。我尝试过的一种哈希函数是添加 ascii 代码并使用模数 (%100)。

我的实际要求是找到与给定模式完全匹配或以给定模式开头的单词。

例如:给定的模式是“comp”。然后我想得到所有以 comp 开头的单词。 (例如:公司、计算机、comp 等)我可以使用散列来执行此操作吗,因为尝试过的散列函数只能找到完全匹配。 那么谁能建议我一个适合这个要求的哈希函数。

最佳答案

前缀匹配最好用 trie 处理.

基本上这是一个树结构,在每个节点上保存键中的一个字符。连接从根到给定节点的路径中不同节点的字符将生成该节点的 key 。

搜索是将搜索关键字的每个字符与子节点进行比较的 trie 降序的问题。一旦你消耗了所有的字符,剩下的子树就是所有以搜索到的键为前缀的键。

关于c++ - 字符串数据的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29675608/

相关文章:

javascript - 创建包含数组中 k 个连续字符串的字符串组合

string - Postgres : limit length of returned string but needs to end on a full word

php - UPDATE 时使用 SHA512 对密码进行哈希处理

MongoDB:在键中使用特殊字符查询哈希

c++ - 使用 dbms_pipe 插入来自繁重事务的数据

c++ - 在两个数据结构中持有相同的唯一指针

python - 在函数内使用 exec 设置变量

c++ - 最佳 C/C++ 网络库

c# - C/C++ - 如何将 Buffer.BlockCopy (C#) 转换为 C/C++

algorithm - 散列值如何映射到布隆过滤器中的向量?