algorithm - 我能否以保留字典字符串紧密度的方式将字符串编码为整数?

标签 algorithm hash hashcode

我想将不同长度的字符串(通常为 1-100 个字符)编码为整数,其方式是字典顺序相似的字符串(它们在字典中靠得很近)导致整数靠得很近,而进一步确保这些整数合理均匀地分布在可能的整数值范围内。

我认识到确保均匀分布可能需要在编码之前对可能的字符串进行某种调查。

有没有人知道如何做到这一点?

最佳答案

一般方法是使用字符串中的前 n 个字符,必要时用零字节填充,作为整数。相应地减少你的字母表,你应该实现相当密集的包装。例子: 假设您的输入字母表是 Base64,其中/代表字符串的结尾。你会散列字符串 'word/' 通过将整数的最高六位设置为 48,接下来的六位设置为 40,依此类推。用两个零填充,你就得到了一个 32 位整数的精确表示。

字典顺序相近的单词将具有相似的开头,因此具有相似的最高有效位。

当然,超过 5 个字符的单词会发生哈希冲突,但这是无法避免的。

关于algorithm - 我能否以保留字典字符串紧密度的方式将字符串编码为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8273004/

相关文章:

arrays - 如何就地洗牌

hash - xkcd : Externalities

java - java中不同对象的长hashCode返回相同的数字

java - Java 对象的默认 hashCode() 实现

algorithm - 处理大量输入序列时应该选择什么

algorithm - 从二进制数中提取奇数位的最佳方法

sql - 识别连接节点堆中的图——这怎么称呼?

regex - 在 bash 中通过正则表达式进行 Grep 哈希

php - 查询将旧哈希密码转换为 AES

java - 如果我在重写 hashCode() 函数时返回常量整数,会发生什么情况?