【Leetcode168】Excel Sheet Column Title

Runtime: 0 ms, faster than 100.00% of C++ online submissions for Excel Sheet Column Title.

Memory Usage: 7.4 MB, less than 100.00% of C++ online submissions for Excel Sheet Column Title.

class Solution {
public:
    string convertToTitle(int n) {
        string s = "";
        while(n){
            int letter = (n-1)%26;
            char c = 'A'+ letter;
            s = c + s;
            n = (n-1)/26; 
        }
        return s;
    }
};

首先說明這道題是受到Leetcode258的啓發,我的解釋在這:

https://mp.csdn.net/console/editor/html/104764026

當然了,已知string求解int很容易,不說了。

言歸正傳,

1 2  3  4       26 27  28

A B C D .......Z AA AB

首先這是一個26進制的,但是數字不是0~25,而是1~26,Leetcode258中已經解釋了方法(n-1)%26+1

解決了餘數,整除後剩下的部分就應該是(n-1)/26.

一個事實:

一個數字如果是0~25表示的26進制,那麼一個數字n,經過一次分解,可以表示爲(n/26)和n%26;

而如果是1~26表示的26進制數,那麼n經過一次分解,則應該表示爲((n-1)/26)和(n-1)%26+1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章