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

题目如下:

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

    还是挺明了的,嗯!



阅读更多
文章标签: leetcode
个人分类: java
想对作者说点什么? 我来说一句

171. Excel Sheet Column Number.py

2018年03月02日 335B 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭