关闭

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

标签: leetcode
85人阅读 评论(0) 收藏 举报
分类:

题目如下:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:24881次
    • 积分:875
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论