力扣刷题(第三十七天)
灵感来源
- 保持更新,努力学习
- python脚本学习
Excel 表列序号
解题思路
Excel 表格的列名称采用字母表示,其规则类似于 26 进制数。具体规则如下:
- 列名称由 A-Z 的字母组成,其中 A 对应 1,B 对应 2,依此类推直到 Z 对应 26。
- 当列数超过 26 时,会使用多字母组合表示,例如 AA 对应 27,AB 对应 28,依此类推。
- 计算列名称对应的序号时,可将其视为以 26 为基数的进制转换问题。每个字母的位置决定了其权重,最右边的字母权重为 26⁰,向左依次递增。
class Solution:def titleToNumber(self, columnTitle: str) -> int:result = 0for char in columnTitle:# 计算当前字符对应的数值(A=1, B=2, ..., Z=26)value = ord(char) - ord('A') + 1# 更新结果,相当于将之前的结果乘以26再加上当前字符的值result = result * 26 + valuereturn result
逐行解释
class Solution:def titleToNumber(self, columnTitle: str) -> int:# 初始化结果变量,用于累加计算列序号result = 0# 遍历输入的列名称中的每个字符for char in columnTitle:# 计算当前字符对应的数值(A=1, B=2, ..., Z=26)# ord(char) 获取字符的ASCII码值,减去'A'的ASCII码值并加1value = ord(char) - ord('A') + 1# 更新结果值,相当于将之前的结果乘以26(进制权重)再加上当前字符的值# 类似于十进制转二进制的计算方式,每左移一位相当于乘以基数(这里是26)result = result * 26 + value# 返回最终计算得到的列序号return result