我正在尝试开发一个系统,可以将我的字符串更改为唯一的整数值,这意味着例如“account”一词的加密数值为 0891,并且没有其他词可以转换为 0891相同的转换过程,它不但是需要能够将生成的整数转换回字符串。
同时会依赖于词结构规则,即“accuracy”、“announcement”等词的生成数大于0891,“a”、“abacus”、“abbreviation”等词的生成数"生成的数字将小于 0891。
此应用程序的目的是提供类似于索引或主键的服务。我不使用增量索引的原因是出于安全目的,并且是由于索引依赖于集合中的数据数
(例如)
[0] A, [1] B, [2] C, [3] D, [4] E, [5] F
以上字母都有对应的索引,E的索引为4
但是如果数据突然增加或减少然后排序
[0] A, [1] AA, [2] AAB, [3] C, [4] D, [5] DA, [6] DZ, [7] E, [8] F
E 现在的索引为 7
每个词必须有一个唯一的独立积分等值,并有相应的权重。
我需要知道是否存在可以执行上述操作的算法。
我们将不胜感激。
最佳答案
除非您强加最大长度,否则您所提供的约束是不可能的。
假设k("a")
和 k("b")
是这两个字符串的代码。
根据您的限制,您正在寻找一个介于这两个值之间的唯一整数,但是 k("a") < k("a....a") < k("b")
.因为有无限数量的样式字符串 "a....a"
(和 "akjhdsfkjhs"
)需要适合两个代码之间,例如 order preserving 通用的、唯一的、固定长度的代码不能存在于任意长度的字符串中。因为您需要与字符串一样多的整数,并且由于字符串不受长度限制,所以这是行不通的。
删除通用(因此不允许插入新字符串)、唯一(允许冲突 - 例如使用前四个字母作为代码!)、无限长度(例如 3 个字符)或保留顺序属性。
关于algorithm - 字符串到唯一整数哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521148/