链接
171. Excel Sheet Column Number
题意
给出excel中的行号表示法,返回其数字表示法。
思路
其实可以理解为一种进制,变成进制间的转化问题。
代码
Java 1:
public class Solution {
public int titleToNumber(String s) {
char[] arr = s.toCharArray();
int res = 0;
for (int i = 0; i < arr.length; i++) {
res += (arr[i] - 64) * Math.pow(26, arr.length - 1.0 - i);
}
return res;
}
}
Java 2:
public class Solution {
public int titleToNumber(String s) {
int result = 0;
for (int i = 0; i < s.length(); i++) {
result = result * 26 + (s.charAt(i) - 'A' + 1);
}
return result;
}
}
思考
- 第二个解法更高效。26位进制数,因此每次累加前先左移一位,再加上新的数。
- -64其实也就是 - 'A' + 1