给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
示例 1:
输入: "A" 输出: 1
示例 2:
输入: "AB" 输出: 28
示例 3:
输入: "ZY" 输出: 701
思路:以 26 进制的转换,相当于十进制的 153 = (1*10*10)+(5*10)+3 = (1*10+5)*10 + 3
其中把「acd」为例:
a:1,
c:1*26 + 3,
d:(1*26 + 3)*26 + 4。
其中还应考虑字符串不存在的情况,并且传进来的字符串是小写的话,还需转换为大写的,
最后使用 tocharArray()转换为字符数组。
大神代码:
private static int titleTonumber(String s) {
int sum = 0;
if(s == null) return -1;
for(char c : s.toUpperCase().toCharArray()) {
sum *= 26;
sum += c - 'A' + 1;
}
return sum;
}