Nameless Site

But one day, you will stand before its decrepit gate,without really knowing why.

0%

Excel表列序号

来自Leetcode第171题Excel表列序号

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

1
2
3
4
5
6
7
8
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...

示例 1:

1
2
输入: "A"
输出: 1

进制转换

26进制转换思路

1
2
3
4
5
6
7
8
9
10
11
public int titleToNumber(String s) {
if(s == null || s.equals(""))
return 0;
int sum = 0, len = s.length(),temp;
for(int i = 0 ; i < len ; i++){
temp = s.charAt(i) - 'A' + 1;
temp *= Math.pow(26,len - i - 1);
sum += temp;
}
return sum;
}

倒序遍历

即从字符串的最高位,即进制转换里的最低位开始转换。

1
2
3
4
5
6
7
8
9
10
public int titleToNumber(String s) {
char[] c = s.toCharArray();
int res = 0;
int mul = 1;
for (int i = c.length - 1; i >= 0; i--) {
res = res + mul * (c[i] - 'A' + 1);
mul *= 26;
}
return res;
}