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
    ...

Example 1:

Input: 1
Output: "A"

Example 2:

Input: 28
Output: "AB"

Example 3:

Input: 701
Output: "ZY"

Solution

There is no 0 in Excel’s representation. When a digit is 26, it is replaced by 26 (‘Z’).

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        if n <= 0:
            return ""

        A = ord('A')
        res = []
        while n > 0:
            if n > 26:
                i = n % 26
                if i == 0:
                    res.append('Z')
                    n -= 26
                else:
                    res.append(chr(A + i - 1))
                n //= 26
            else:
                res.append(chr(A + n - 1))
                break
        res.reverse()
        return ''.join(res)