【发布时间】:2013-01-31 18:07:34
【问题描述】:
我想生成与数字相对应的字母序列,即“A”、“DE”、“GJE”等。前 26 个很简单,所以 3 返回“C”,26 返回“Z”,27 返回“AA”,28 返回“AB”,依此类推。
我不太清楚的是如何做到这一点,以便它可以处理传入的任何数字。所以如果我传入 4123,我应该返回 3 个字母的组合,因为 (26 * 26 * 26) 允许多达 +17,000 种组合。
有什么建议吗?
【问题讨论】:
-
这基本上是一个基数为 26 的数字(但基数中没有数字)
-
@SergioTulentsev - 这个问题更复杂,事实证明。我认为导致麻烦的关键特征是
A在某些情况下表示“0”(作为“个”数字),但A在其他情况下表示“1”(作为“十/二十六”数字。有趣的是,微软的某个人必须解决这个问题;) -
我错过了一些东西。为什么“A”特别? A=1*1=1,AA=1*26+1*1=27。
-
@glennmcdonald "A" 并不特别。 “A”总是对应于“1”。特殊的是跳过了“0”。想象一下十进制,向上计数,跳过“0”:1, 2, ..., 8, 9, 11, 12, ..., 18, 19, 21, 22, ..., 98, 99, 111, 112, ... 现在,如果你用七进制(以 27 为底)而不是十进制,你会得到序列。
-
哦,对了。可能更容易在基数 26 中真正做到这一点,A 为 0。在这个问题中不清楚零的东西是想象解决方案的要求还是工件。