Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------
题意
将字母转换成对应的数字
思路
这种转换问题需要多写几个实例进行观察,通过观察,本题的规律为:number = 26i *position.
其中i表示该字母所在数组的位置(相反),position表示该字母在26个字母中的位置。
比如AB:number = 260 *2+ 261 *1 = 28。与AB顺序相反,B位于第一位,所在数组位置为0,又因为
B是26个字母中第二个,所以B的值为 260 *2。另外A所在数组位置为1,A是26个字母中第一个,所以
A的值261 *1 。最终转换后的值为30。
按此思路,实现代码如下
代码
public class Solution {
public int titleToNumber(String s) {
char[] columnArray = s.toCharArray();
int length = columnArray.length;
int result =0;
for(int i=0;i < length;i++){
int difference = columnArray[i] - 64;
int powValue = length -i-1;
result +=Math.pow(26, powValue)*difference;
}
return result;
}
}
我的代码耗时14ms,有另外一种方法耗时2ms
public class Solution {
public int titleToNumber(String s) {
int ans = 0;
char[] letters = s.toCharArray();
for(char a:letters){
ans *= 26;
ans += (a-'A'+1);
}
return ans;
}
}