A,B,C,...。 Z,AA,AB,... .AZ,BA,BB,...。 ,ZZ,AAA,...写一个函数,它需要一个整数n并返回字符串表示。有人可以告诉我算法来找到系列中的第n个值吗?系列算法
系列算法
回答
治疗那些字符串作为数字与A=0
基座26。这不完全是一个确切的翻译,因为在实际基地26 A=AA=AAA=0
,所以你必须做一些必要的调整。
这里是一个Java实现:根据需要
static String convert(int n) {
int digits = 1;
for (int j = 26; j <= n; j *= 26) {
digits++;
n -= j;
}
String s = "";
for (; digits --> 0 ;) {
s = (char) ('A' + (n % 26)) + s;
n /= 26;
}
return s;
}
这种转换0=A, 26=AA, 702=AAA
。
没有放弃太多(因为这个问题似乎是一个家庭作业问题),你正在做的是接近相同的翻译整数n
到基地26.祝你好运!
不准确的翻译。 'A'对'AA'对'AAA'等 – polygenelubricants 2010-03-06 00:54:35
@polygenelubricants,它足够接近作业。提供一个完整的解决方案(如你的)对学习者是一种伤害。 – 2010-03-06 02:04:01
它可能或可能不是家庭作业,我们永远无法100%确定。我不想处理元问题,只是尽我全力回答问题。不过,我了解你的观点。 “家庭作业”问题也曾经困扰过我。 – polygenelubricants 2010-03-06 02:10:49
如果像有些人怀疑,这是功课,那么这个答案可能不会有太大帮助。如果这是针对真实世界的项目,那么制作一个生成器可能是有意义的,这对于某些语言(如Python)来说是一件很容易和习惯的事情。是这样的:
def letterPattern():
pattern = [0]
while True:
yield pattern
pattern[0] += 1
# iterate through all numbers in the list *except* the last one
for i in range(0,len(pattern)-1):
if pattern[i] == 26:
pattern[i] = 0
pattern[i+1] += 1
# now if the last number is 26, set it to zero, and append another zero to the end
if pattern[-1] == 26:
pattern[-1] = 0
pattern.append(0)
除了代替得到pattern
本身你会扭转它,并映射为0〜A,1到B,等等。然后得到的字符串。我已经运行上面的代码,它似乎工作,但我没有广泛测试它。
我希望你会发现这个可读落实不够,即使你不知道的Python。 (对于Pythonistas来说,是的,“我在范围内(...)”循环是丑陋的,并且没有音调,但是在我头顶,我不知道任何其他方式来做我在这里做的事情)
- 1. 算法来处理一系列的值
- 2. 计算一系列
- 3. 几何系列模运算
- 4. 计算一系列值
- 5. ř计算一系列
- 6. 计算系列的总和
- 7. 计算一个系列
- 8. 算法阵列
- 9. 散列算法
- 10. 星系生成算法
- 11. 专家系统算法
- 12. 建议算法/库/系统
- 13. Python Pandas,从现有系列的计算创建新系列
- 14. RAR3散列算法
- 15. 算法从阵列
- 16. 60bit散列算法
- 17. 算法从列表
- 18. 在模式匹配时间系列中选择哪种算法?
- 19. 从一系列照片学习3D模型的算法
- 20. 需要一个算法来分割一系列数字
- 21. 改变剧情系列中着色的算法
- 22. 算法 - 查找一系列Sophie Germain素数
- 23. 最好的算法来寻找爱科斑点系列
- 24. 鉴于数字系列,找到校验数字算法...?
- 25. 为每个用户分配一系列唯一位的算法?
- 26. 该算法是现有的实时系统算法吗?
- 27. 熊猫系列的时间算术
- 28. 如何计算Fortran系列的模式
- 29. 计算一系列的所有组合
- 30. 在Java中计算Tarloy系列
如果这是家庭作业,那么将它包含在您的标签中会很好。 – 2010-03-06 00:15:15
n开始1还是n开始于0? – 2010-03-06 00:42:37
这个问题在这里至少被问了3次,每次在答案中都有大量的实现。 – Svante 2010-03-06 11:06:13