题目描述:
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
方法一:进制转换(C++代码)
分析:此题的本质为26进制转换为10进制
注意:这道题和标准的进制转换不同,Excel 表的列序号是从 1 开始的,因此在进制转换时需要进行处理。
class Solution {
public:
int titleToNumber(string columnTitle) { //方法一:进制转换(26进制转换为10进制)
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的幂方
multiple *= 26;
}
return number;
}
};
时间复杂度:O(n),空间复杂度:O(1),其中 n 为 Excel 表列名称 columnTitle 的长度。