LeetCode-Python-171. Excel表列序号

本文介绍了一种将Excel表格中的列名称转换为其相应列序号的算法。通过使用26进制到十进制的转换原理,文章提供了一个简单有效的解决方案。包括两种实现方式:一种是常规迭代方法,另一种是更简洁的单行表达式。

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

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

    A -> 1
    B -> 2
    C -> 3
    ...
    Z -> 26
    AA -> 27
    AB -> 28 
    ...

示例 1:

输入: "A"
输出: 1

示例 2:

输入: "AB"
输出: 28

示例 3:

输入: "ZY"
输出: 701

 

思路:

一道简单的26进制转十进制的水题。

依次处理每个位就好。

正常写法:

class Solution(object):
    def titleToNumber(self, s):
        """
        :type s: str
        :rtype: int
        """
        l = len(s) - 1
        res = 0
        for index, item in enumerate(s):
            res += (ord(item) - ord("A") + 1) * (26 ** (l - index))
        return res
            
极端写法:

return  sum((ord(item) - ord("A") + 1) * (26 ** (len(s) - index - 1)) for index, item in enumerate(s))

下面的写于2019年7月18日19:10:48 

class Solution(object):
    def titleToNumber(self, s):
        """
        :type s: str
        :rtype: int
        """
        res = 0
        for char in s:
            res *= 26
            res += 1 + ord(char) - ord("A")           
        return res

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值