码迷,mamicode.com
首页 > 其他好文 > 详细

Excel Sheet Column Title -- leetcode

时间:2015-06-23 21:44:33      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:leetcode   进制转换   

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

标签:leetcode   进制转换   

原文地址:http://blog.csdn.net/elton_xiao/article/details/46609127

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!