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