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 -> AB
基本思路:
本题实质上,是将一个整数从10进制转换成26进制。
由于 ‘A‘对应的是1,而不是0,需要进行调整,即作减1操作。
class Solution {
public:
string convertToTitle(int n) {
stack<char> s;
while (n) {
--n;
s.push('A'+ n % 26);
n /= 26;
}
string ans;
while (!s.empty()) {
ans += s.top();
s.pop();
}
return ans;
}
};直接在字符串前面插入,可以省掉栈:
class Solution {
public:
string convertToTitle(int n) {
string ans;
while (n) {
ans.insert(ans.begin(), 'A'+(n-1)%26);
n = (n-1) / 26;
}
return ans;
}
};或者用递归来取代栈
class Solution {
public:
string convertToTitle(int n) {
return n ? convertToTitle((n-1)/26) + (char)('A' + (n-1)%26) : "";
}
};
Excel Sheet Column Title -- leetcode
原文地址:http://blog.csdn.net/elton_xiao/article/details/46609127