问题描述:
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-title
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
执行结果:
代码描述:
思路:对于数字Num, 从低位到高位开始寻找,先取%26,判断哪个字母,然后 /26 进位继续判断哪个字母。最后把加和的字符串 s 进行反转,输出从高位到低位的字符串。
需要注意一点: 1-A, 26-Z, ASCII 码中 A=65, Z=90 . 当每一次计算一个数值+A的时候,需要提前对 n-1 处理。不然就会出现 n = 1, n+'A'=66, 结果输出B 了。
class Solution {
public:
string convertToTitle(int n) {
if(n <= 0) return "";
string res;
res = help(n);
char t;
// 需要将字符串反转
for(int i = 0; i < res.size()/2; ++i)
{
t = res[i];
res[i] = res[res.size()-1-i];
res[res.size()-1-i] = t;
}
return res;
}
string help(int n)
{
string s;
while(n > 0)
{
--n;
s += (char)(n%26 + 'A');
n /= 26;
}
return s;
}
};