这道题是LeetCode里的第168道题。
题目描述:
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:
输入: 1 输出: "A"示例 2:
输入: 28 输出: "AB"示例 3:
输入: 701 输出: "ZY"
String 和 StringBuilder 时间上一样。
解题代码:
class Solution {
public String convertToTitle(int n) {
// if(n <= 0)return "";
// String s = "";
// while(n != 0){
// int get = n % 26 == 0 ? 26 : n % 26;
// n -= get;
// n /= 26;
// char ch = (char)(64 + get);
// s = ch + s;
// }
// return s;
if(n <= 0)return "";
StringBuilder sb = new StringBuilder();
while(n > 0){
//int get = n%26==0 ? 26 : n%26;
n--;
int get = n % 26;
n -= get;
n /= 26;
sb.append((char)(get+'A'));
}
return sb.reverse().toString();
}
}
提交结果:
个人总结:
代码里需要减一是因为现实中第一个是逻辑上的1,计算机里第一个却是0。