Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> ABCredits:
Special thanks to @ifanchu for adding this problem and creating all test cases.tag: math
虽然此题被leetcode标为简单题,但感觉还是有难度的,需要脑筋急转弯,而不是考察数据结构。
此题关键在于,我们平常的计数法是0-25,但它是1-26.并且,后一位的Z表示的数的大小和前一位的A相同。
即:AZ = 1 * 26 + 26
A和Z都表示26,所以我们在做取余求各位的值时,如果余数为0,我们把它置为26,并向上一位借1,也即n–。在循环外面,如果n不等于0,我们需要把它也压入栈中,然后再把栈反转,得到最后的结果。
class Solution {
public:
stack<int> s;
string convertToTitle(int n) {
while(n / 26 > 0){
int leastDigit = n % 26;
n = n / 26;
if(leastDigit == 0){
leastDigit = 26;
n--;
}
s.push(leastDigit);
}
if(n != 0){
s.push(n);
}
string ss;
while(s.empty() == false){
char c = s.top() + 'A' - 1;
ss.push_back(c);
s.pop();
}
return ss;
}
};

9/7/2015 update
A cleaner solution, make use of insert function in string class.
class Solution {
public:
string convertToTitle(int n) {
string s;
int remainder = 0;
while(n > 0){
remainder = n % 26;
n = n / 26;
if(remainder == 0){
remainder = 26;
n--;
}
s.insert(0, 1, remainder + 'A' - 1);
}
return s;
}
};