Leetcode No.168 Excel Sheet Column Title Excel表列名称(c++实现)

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;
    }
};
posted @ 2021-08-02 13:10  云梦士  阅读(87)  评论(0编辑  收藏  举报