问题描述
给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: "A"
输出: 1
示例 2:
输入: "AB"
输出: 28
示例 3:
输入: "ZY"
输出: 701
思路
就好像把进制改成26,满26进一位,每位上代表的数值为:该位上的数字 * 26 * (第几位-1)
实现
class Solution {
public int titleToNumber(String s) {
int len = s.length();
int sum = 0;
int b = 1;
for (int i = len; i >= 1; i--) {
int v = (Integer.valueOf(s.charAt(i - 1)) - 64) * b;
sum = sum + v;
b = b * 26;
}
return sum;
}
}
执行时间分布,一会战胜100%,一会战胜10%的。。。
但完成的思路是一致的,进制法。