Q168 Excel Sheet Column Title

时间:2022-05-11
本文章向大家介绍Q168 Excel Sheet Column Title,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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 
解题思路:

这题实际上是一个数到由字母A~Z组成的26进制转化问题。

可以观察到以下规律:

 ABCD=A×26³+B×26²+C×26¹+D=1×26³+2×26²+3×26¹+4

但是不能简单的使用 n%26 ,因为:

ZZZZ=Z×26³+Z×26²+Z×26¹+Z=26×26³+26×26²+26×26¹+26

因此,我们可以使用** (n-1) % 26 **去解决该问题。

在构造的过程中,从低位到高位依次构造。

在编程的过程中,可以以以下两个数为例子编写代码:

53  -> BA ->  B*26¹ + A = 2*26 + 1
78  -> BZ  -> B*26¹ + Z = 2*26 + 26
注意点:

在Python中,使用 chr(65) = 'A' 可以将数字转化为 ASCLL,使用 ord('A') = 65 可以将 ASCLL 转化为数字。

Python实现:
class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        ans = ''
        while n > 0:
            tem = (n - 1) % 26  # 防止ZZZ这种
            ans = chr(tem + ord('A')) + ans  # 从低位到高位依次构造
            n -= tem  # 减去低位
            n //= 26  # 降幂
        return ans

a = 26*(26**2)+26*(26**1)+26*(26**0)
b = 1*(26**3)+1*(26**2)+1*(26**1)+1*(26**0)
c = Solution()
print(c.convertToTitle(a))  # ZZZ
print(c.convertToTitle(b))  # AAAA