LeetCode-171. Excel Sheet Column Number (Java)

来源:互联网 发布:热力地图制作软件 编辑:程序博客网 时间:2024/05/22 16:05

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 = 26 *position.

其中i表示该字母所在数组的位置(相反),position表示该字母在26个字母中的位置。

比如AB:number = 260  *2+ 26*1 = 28。与AB顺序相反,B位于第一位,所在数组位置为0,又因为

B是26个字母中第二个,所以B的值为 26 *2。另外A所在数组位置为1,A是26个字母中第一个,所以

 A的值26*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;    }}

原创粉丝点击