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