Leetcode: Excel Sheet Column Title

本文介绍了一种将正整数转换为Excel工作表中对应列标题的方法,例如1转换为A,26转换为Z,27转换为AA等。通过数学分析,详细解释了如何使用模运算和除法来实现这一转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 

Credits:
Special thanks to @ifanchu for adding this problem and creating all test cases.

Hide Tags Math


Analysis

This problem is to convert 1-26 to A-Z. Commonly, this kind of problem using ‘mod’ is in range [0,25].

The general equation is

an26n+an126n1+...+a1261+a0

where ai[1,26]

Each time we get the last digit by computing d=n%26. To convert it to be [0,25], we have to decrease the last digit of n by 1.
For example, after get d=a01, we do n = n/26, so we have

an26n1+an126n2+...+a1

So by doing d=(n-1)%26, we get the number[0,25] for a1.

See solution v2


Solution

v1

The idea of this solution is to lend carry=1 to the lower digit if it is 26.

class Solution:
    # @param {integer} n
    # @return {string}
    def convertToTitle(self, n):
        res = []
        if n<=0:
            return res 

        while(n>0):
            d = n%26
            n = n/26
            if d==0:
                d = 26
                n = n -1 
            res = [ str(unichr(d+64)) ] + res

        return "".join(res)

v2

This is general solution

class Solution:
    # @param {integer} n
    # @return {string}
    def convertToTitle(self, n):
        res = []
        if n<=0:
            return res 

        while(n>0):
            d = (n-1)%26
            res = [ str(unichr(d+65)) ] + res
            n = n/26

        return "".join(res)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值