一、需求
- 给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: "A" 输出: 1示例 2:
输入: "AB" 输出: 28示例 3:
输入: "ZY" 输出: 701
二、进制转换
2.1 思路分析
- A~Z代表1~26,遍历字符串,获得当前字符必然是A~Z中的一个,将当前字符转换成对应的整数,这些整数是以26进制表示的,转换为10进制即可;
2.2 代码实现
class Solution {
public int titleToNumber(String s) {
int sum = 0;
for(int i = 0; i < s.length(); i++) {
int tmp = s.charAt(i) - 64;
sum = sum * 26 + tmp;
}
return sum;
}
}
2.3 复杂度分析
- 时间复杂度为O(N),遍历字符串消耗O(N)的额外空间;
- 空间复杂度为O(1);