将数字分配给字符串的算法?

时间:2018-01-23 22:46:33

标签: algorithm

我想设计一个存储字符串值的字典,这样当比较两个字符串时,可以使用两个相应的值来确定哪个字符串首先出现在字典中。

例如," a"的值应该小于" ab"的值。 " z"的值应该大于" az"的值。等等。

我试着谷歌搜索但是我无法找到它:(有没有一种很好的方法来实现它?我看到它非常类似于十进制系统但是在基数为26.(例如aaa会就像111,aaz就像11(26)。)但是那对于" z">" az"的情况不会起作用,因为那样会是说(26)> 1(26)。

我想出的一个解决方案是取最大单词的长度(让我们说m),然后通过做26 ^ m + 26 ^(m-1)来分配一个值,依此类推每封信。然而,这需要知道最大单词的长度。有没有这样的算法不需要这个?

1 个答案:

答案 0 :(得分:4)

这对于自然数/整数是不可能的,因为在任何两个字符串之间存在无限数量的其他字符串(例如"asdf" < "asdfa" < "asdfaa" < ... < "asdg"),但在任何两个整数之间只有有限数量的整数。 / p>

但是,正如评论中所建议的,如果您可以使用实数,则可以将字符串映射到char1 + char2/27 + char3/27^2+...。但是,对于长字符串,这将达到最大浮点精度并停止正常工作。