1. 程式人生 > 其它 >Leetcode No.168 Excel Sheet Column Title Excel表列名稱(c++實現)

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;
    }
};
作者:雲夢士 出處:http://www.cnblogs.com/yunmeng-shi/ 本文版權歸作者和部落格園共有,歡迎轉載,但必須給出原文連結,並保留此段宣告,否則保留追究法律責任的權利。