我想将不同长度的字符串(通常为 1-100 个字符)编码为整数,其方式是字典顺序相似的字符串(它们在字典中靠得很近)导致整数靠得很近,而进一步确保这些整数合理均匀地分布在可能的整数值范围内。
我认识到确保均匀分布可能需要在编码之前对可能的字符串进行某种调查。
有没有人知道如何做到这一点?
最佳答案
一般方法是使用字符串中的前 n 个字符,必要时用零字节填充,作为整数。相应地减少你的字母表,你应该实现相当密集的包装。例子: 假设您的输入字母表是 Base64,其中/代表字符串的结尾。你会散列字符串 'word/' 通过将整数的最高六位设置为 48,接下来的六位设置为 40,依此类推。用两个零填充,你就得到了一个 32 位整数的精确表示。
字典顺序相近的单词将具有相似的开头,因此具有相似的最高有效位。
当然,超过 5 个字符的单词会发生哈希冲突,但这是无法避免的。
关于algorithm - 我能否以保留字典字符串紧密度的方式将字符串编码为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8273004/