Skip to main content

171.Excel 表列序号

标签: math, string

难度: Easy

通过率: 64.96%

原题链接: https://leetcode.com/problems/excel-sheet-column-number/description/

题目描述

给定一个字符串 columnTitle ,表示 Excel 表格中的列名,返回其对应的列序号。例如:A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28

解题思路

对于 Excel 表格中的列名,可以看作是一个 26 进制的数,其中每个字母对应一个数字:A 对应 1,B 对应 2,以此类推到 Z 对应 26。对于字符串来说,从右到左依次处理每个字符,将其转换为相应的数值并乘以 26 的幂次,累加到结果中。这类似于将一个 26 进制的数转换成 10 进制的过程。例如对于列号 "AB",可以解释为 1*26 + 2 = 28。

代码实现

def titleToNumber(columnTitle):
# 初始化结果为0
result = 0
# 遍历每个字符
for char in columnTitle:
# 将当前字符转换为对应的数字,并累计到结果
# ord(char) - ord('A') + 1 将 A对齐到1, B对齐到2,以此类推
result = result * 26 + (ord(char) - ord('A') + 1)
return result

复杂度分析

时间复杂度:O(n),其中 nn 是字符串 columnTitle 的长度,因为我们需要对每个字符进行处理。

空间复杂度:O(1),我们只需要常量级别的额外空间用于存储结果。