【发布时间】:2013-09-09 18:26:45
【问题描述】:
给定一个由字符 A-Z 组成的最长 25 个字符的输入字符串,输出其在输入字符串的所有可能字谜的字母排序列表中的索引。输入字符串不区分大小写。输入字符可以重复。应用程序必须在 500 毫秒内完成,并且占用的内存少于 1GB。
乍一看,如果没有任意精度的数学库,这似乎是不可能的。最坏情况输入是 25 个唯一字符,结果为 25!可能的字谜。 25!比 2^64 大几个数量级。因为索引和字符串之间的关系不是直接的,必须经过计算,所以没有办法简单地将字符串转换为数字。
这来自我前几天收到的一个面试挑战。我无法为他们想出一个解决方案,他们坚持认为确实有一个好的解决方案......
【问题讨论】:
-
这不是重复的,因为我在这里真正要问的问题是如何在不使用任意精度数学库的情况下做到这一点。
-
显而易见的答案是:这是不可能的,因为 答案 可以大于 2^64
标签: algorithm math combinatorics anagram