Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
给定一个正整数,返回它在 Excel 表中相对应的列名称。
输入 | 输出 |
---|---|
columnNumber = 1 | "A" |
columnNumber = 28 | "AB" |
columnNumber = 701 | "ZY" |
columnNumber = 2147483647 | "FXSHRXW" |
这道题类似于十进制转化为其他进制的问题,因此可以类比进制转换的“除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; } };