我有一个奇怪的要求,我似乎无法理解。我需要想出一个函数,该函数将接受一个文本字符串并返回一个与该字符串相对应的数字 - 这样,在排序时,这些数字将与原始字符串的顺序相同。例如,如果我的函数产生这个映射:
"abcd" -> x
"abdef" -> y
"xyz" -> z
那么数字必须是这样的x < y < z
。字符串可以是任意长度,但总是非空的,并且字符串比较应该不区分大小写(即"ABC"
并且"abc"
应该产生相同的数值)。
我的第一个想法是将每个字母映射到相应的数字 1 到 26,然后只得到结果数字,例如a = 1, b = 2, c = 3, ..., z = 26
,然后"abc"
会变成1*26^2 + 2*26 + 3
,但是后来我意识到文本字符串可以包含任何语言的任何文本(即完整的 unicode),所以这行不通。在这一点上,我被困住了。在我告诉客户草皮之前还有其他想法吗?
PS 这个奇怪的要求是由于专有系统的限制,只能按数字字段进行排序。如果任何其他字段类型需要排序,则必须将其转换为某种数字表示 - 然后进行排序。不要问。