题目描述
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例:
输入: 28
输出: "AB"
解题思路
本题可以参考对10进制的操作。26进制,理论上应该用0~25表示。因为缺少0位,所以我们需要多一步操作,把0对应A,…, 25对应Z,让它变成标准的26进制。比方说52——AZ,若按标准26进制应该51——AZ,所以--n
,使52变成51,然后取余。一直循环至n为0结束。
参考代码
// 其实就是10进制转26进制(只不过多了个--n的操作)
class Solution {
public:
string convertToTitle(int n) {
string res = "";
while(n){
res += (--n) % 26 + 'A'; // 每次循环都要 --n
n = n / 26;
}
reverse(res.begin(), res.end()); // 别忘记reverse
return res;
}
};