关于LeetCode中Excel Sheet Column Number一题的理解

来源:互联网 发布:linux apache ssl下载 编辑:程序博客网 时间:2024/05/16 08:27

题目如下:

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 
    其实就是求一个“26进制”数......

    把一个字符串转化为“10进制”数的方法大家应该完全没问题吧,“26进制”同理,只不过把“10”换成了“26”罢了,照例放上已Accepted的代码:

<span style="font-size:14px;">    public int titleToNumber(String s) {        double result = 0;        for (int i=0;i<s.length();i++){            result += Math.pow(26,s.length()-1-i)*(s.charAt(i)-'A'+1);        }        return (int)result;    }</span>
    这题果然是太简单了,怪不得Accepted率这么高。然后是评论区的方法,如下所示:

    public int titleToNumber(String s) {        int value = 0;        for(int i = 0; i < s.length(); i++)            value = value * 26 + ((int)s.charAt(i) - 'A') + 1;        return value;    }

    第一次看这个方法的时候还是有点懵逼的,因为我菜嘛,那么用类比的方法举一个10进制的12345这个数的例子来说明一下上面评论区的这种方法。

第一次循环:

value=0*10 + 1 = 1

第二次循环:

value = 1*10 +2 = 12

第三次循环:

value = 12*10 + 3 = 123

第四次循环:

value = 123 *10 + 4 = 1234

第五次循环:

value = 1234 * 10 + 5 = 12345

    还是挺明了的,嗯!



1 0
原创粉丝点击