Excel Sheet Column Title (STRING - TYPE CONVERTION)

QUESTION

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 

FIRST TRY

class Solution {
public:
    string convertToTitle(int n) {
        int remain = n%26;
        n /= 26;
        string ret = "";
        char ch;
        while(1)
        {
            if(n == 0 && remain == 0)
            {
                return ret;
            }
            else if(n == 0)
            {
                ch = getChar(remain);
                return ch + ret;
            }
            ch = getChar(remain);
            ret = ch + ret; //char -> string, direct concat
            remain = n%26;
            n /= 26;
        }
        return ret;
    }
    
    char getChar(int n)
    {
        if(n != 0)
            return 'A'+ n - 1;
        else
            return 'Z';
    }
};

Result: Wrong

Input: 26
Output: "AZ"
Expected: "Z"

SECOND TRY

注意了余数为0的情况

class Solution {
public:
    string convertToTitle(int n) {
        int remain = n%26;
        n /= 26;
        string ret = "";
        char ch;
        while(1)
        {
            if(n == 0 && remain == 0)
            {
                return ret;
            }
            else if(n == 0)
            {
                ch = getChar(n,remain);
                return ch + ret;
            }
            ch = getChar(n,remain);
            ret = ch + ret; //char -> string, direct concat
            remain = n%26;
            n /= 26;
        }
        return ret;
    }
    
    char getChar(int& n, int remain)
    {
        if(remain != 0)
            return 'A'+ remain - 1;
        else
        {
            n -= 1;
            return 'Z';
        }
    }
};

posted on 2015-01-03 07:34  joannae  阅读(202)  评论(0编辑  收藏  举报

导航