题目
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
这种题跟整型转化为一个字符串,整型转化为一个二进制都是一个道理,使用递归比较适合本题,但是还是稍微有区别的,先来上代码
StringBuilder sb = new StringBuilder("");
public String convertToTitle(int n) {
n--;
if (n < 26) {
sb.append(intToChar(n));
return sb.toString();
}
convertToTitle(n/26);
sb.append(intToChar(n%26));
return sb.toString();
}
public char intToChar(int n) {
return (char)(n+'A');
}看到什么区别了么?在这个函数的第一行有一个n--,因为这个看似是一个26进制问题,但是问题就来了,他的初始数字不是0是1,在你在使用除法和取余等操作的时候,自然用到了自然数的0这个特性,好像是这样吧。。。。所以把n减一,最后才是真正的26进制问题,是0~25的26进制(跟0~9的十进制,0~1的二进制等相同),而不是1~26的26进制。。。好像是这个道理吧。。。追求代码的简洁性,更简练的代码
public String convertToTitle(int n) {
n--;
if (n < 26) {
return String.valueOf(intToChar(n));
}
return convertToTitle(n/26) + intToChar(n%26);
}
public char intToChar(int n) {
return (char)(n+'A');
}

本文详细解析如何将整数转换为Excel列名,采用递归算法解决26进制问题,并强调了算法逻辑与实现细节。通过实例代码,展示了如何在不使用常规方法的情况下,巧妙地处理数字到字母的映射问题。
343

被折叠的 条评论
为什么被折叠?



