【发布时间】:2018-01-23 22:46:33
【问题描述】:
我想设计一个字典来存储一个字符串的值,这样当比较两个字符串时,两个对应的值可以用来确定字典中哪个字符串排在第一位。
例如,“a”的值应小于“ab”的值。 “z”的值应大于“az”的值。等等。
我尝试用谷歌搜索,但找不到它:( 有没有很好的方法来实现这个?我发现它与十进制系统非常相似,但以 26 为基数。(例如 aaa 就像111,而 aaz 就像 11(26)。)但这不适用于 "z" > "az" 的情况,因为那会说 (26) > 1(26)。
我想出的一个解决方案是取最大单词的长度(假设是 m),然后通过对每个字母执行 26^m + 26^(m-1) 等等来分配一个值。然而,这需要知道最大单词的长度。有没有这样的算法不需要这个?
【问题讨论】:
-
您可能想要比较的最大字符串有多大?另外,字符串是否包含除字母以外的任何内容?
ñ或œ等外文字母呢? -
为什么需要数字表示?我知道的每一种编码语言都有内置的字符串比较函数。
-
必须是整数吗?如果你使用浮点数,你可以做
int(s[0]) + int(s[1])*26^-1 + ...
标签: algorithm