leetcode-Excel Sheet Column Title

题目:

  把数字转化为excel形式的字符表示。示例:1->A 2->B 3->C ... 26->Z 27->AA...

 

解题思路:

  乍一看有点像进制转换题目,不过细想想发现它没有‘0’。所以这时候需要我们仔细观察:很明显,这是26进制的表示方法,但是没有0的表示方法。所以我们来归纳一下,十进制10在这里面怎么表示,是Z,20呢?B*,30是C*,以此类推:

10 - Z

20 - B*

30 - C*

...

260 - YZ

 

  也就是说当n>0且n%26 == 0时,我们输出Z,并且向上一位借1(这里有点像除法的借位),换而言之,当n%26==0时,我们输出Z之后,在后续的计算中n应该等于 (n-1)/26。所以代码如下

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        ret = ''
        alpha = 'ZABCDEFGHIJKLMNOPQRSTUVWXY'
        while n > 0:
            ret = alpha[n%26] + ret
            n = (n-1) / 26
        return ret

 

posted @ 2015-10-11 00:27  Xander-Hang  阅读(249)  评论(0编辑  收藏  举报