leetcode171. Excel 表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:
A -> 1
B -> 2
C -> 3
…
Z -> 26
AA -> 27
AB -> 28
…
示例 1:
输入: columnTitle = “A”
输出: 1
示例 2:
输入: columnTitle = “AB”
输出: 28
示例 3:
输入: columnTitle = “ZY”
输出: 701
目录
- leetcode171. Excel 表列序号
- 题目解析
- 算法分析
- 算法步骤
- 算法流程
- 具体代码
- 算法分析
- 易错点
- 相似题目
题目解析
题目要求我们将Excel表格中的列标题(如"A", “B”, “Z”, “AA”, "AB"等)转换为对应的列号。在Excel中,列标题是按照26进制来表示的,其中"A"对应1,"Z"对应26,"AA"对应27,以此类推。
算法分析
这个问题可以通过将列标题视为26进制数来解决。我们需要从右到左遍历列标题的每个字符,将其转换为对应的数字,并乘以26的相应次幂,然后累加到结果中。
算法步骤
- 初始化结果变量
res
为0。 - 从列标题的最后一个字符开始,向左遍历每个字符。
- 对于每个字符,计算它在26进制中的值(字符’A’对应的值为1,'B’为2,依此类推)。
- 将该值乘以26的相应次幂(从1开始,每向左移动一个字符,次幂加1)。
- 将计算出的值累加到结果变量
res
中。 - 返回结果变量
res
。
算法流程
具体代码
class Solution {
public:int titleToNumber(string columnTitle) {int number = 0;long multiple = 1;for (int i = columnTitle.size() - 1; i >= 0; i--) {int k = columnTitle[i] - 'A' + 1;number += k * multiple;multiple *= 26;}return number;}
};
算法分析
- 时间复杂度: O(n),其中n是字符串的长度。这是因为我们需要遍历整个字符串一次。
- 空间复杂度: O(1),我们只需要常数级别的额外空间来存储结果和临时变量。
易错点
- 正确处理字符到数字的转换,确保’A’对应1,'Z’对应26。
- 正确计算26的次幂。
相似题目
题目 | 链接 |
---|---|
Excel表列名称 | https://leetcode.cn/problems/excel-sheet-column-title/ |
Excel表列序号 | https://leetcode.cn/problems/excel-sheet-column-number/ |