【问题标题】:Hash Function for Trie based implementation基于 Trie 实现的哈希函数
【发布时间】:2014-11-22 21:04:35
【问题描述】:
我应该建立一个字典 Trie 并使用节点。我需要将它们存储在哈希表中。我需要创建一个哈希函数将节点放置在正确的位置。如何在哈希函数中将字符串转换为整数?
【问题讨论】:
标签:
java
dictionary
hash
trie
【解决方案1】:
一个常见的散列示例,虽然不一定是一个好的示例,是对字符串中每个字符的 ascii 值求和,以散列表的大小为模。
【解决方案2】:
你可以试试卡丁车。它使用巧妙的密钥交替算法在二叉树中隐藏 trie 数据结构:http://code.dogmap.org/kart/。
长度为 klen 的密钥 k 中位置 pos 的翻译位可以计算为:
unsigned int bit(size_t pos, unsigned char const* k, size_t klen) {
if (pos/(CHAR_BIT+1)>=klen) return 0;
if (pos%(CHAR_BIT+1)==0) return 1;
return (((unsigned int)k[pos/(CHAR_BIT+1)])>>(CHAR_BIT-pos%(CHAR_BIT+1)))&(unsigned int)1;
}