1. 题目
1.1 英文题目
Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
1.2 中文题目
给定一个正整数,返回它在 Excel 表中相对应的列名称。
1.3输入输出
输入 | 输出 |
---|---|
columnNumber = 1 | "A" |
columnNumber = 28 | "AB" |
columnNumber = 701 | "ZY" |
columnNumber = 2147483647 | "FXSHRXW" |
1.4 约束条件
- 1 <= columnNumber <= 231 - 1
2. 分析
2.1 一般算法
这道题类似于十进制转化为其他进制的问题,因此可以类比进制转换的“除2取余法”,具体代码如下:
class Solution {
public:
string convertToTitle(int columnNumber) {
int carry = -1;//存储余数
string result = "";
char element;//结果中的字母元素
while (columnNumber > 1 || (columnNumber == 1 && carry != 0))
{
if (carry == 0) { // 这一步最关键,若某一位余数为0,则上一位减1
--columnNumber;
}
carry = columnNumber % 26;
element = carry != 0 ? static_cast<char>(carry - 1 + 'A') : 'Z';
result = element + result;
columnNumber /= 26;
}
return result;
}
};