zoukankan      html  css  js  c++  java
  • [LeetCode#171]Excel Sheet Column Number

    Problem:

    Related to question Excel Sheet Column Title

    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 

    Analysis:

    This problem is very easy. If you truely understand the principle of binary or decimal system.
    To represent a number a in the base of b. we have
    a0 a1 a2.....
    Covert it into decimal system, we have
    (b^0)*a0 + (b^1)*a1 + (b^2)*a2 + ....
    
    In this problem, base is 26 ('A' to 'Z').
    For the digit at index 'i', it is weight is:
    int digit_weight = (int)Math.pow(26, s.length() - 1 - i);
    
    One thing should be very careful, in this mapping.
    'A' is mapping to '1' rather than '0', which means it starts from '1' to '26'. 
    The decimal number is just a way to represent it! Just as the mapping we have done before (Hash). 
    The important thing is to be able to recover it from the decimal number. 
    
    
    Note:
    In java, we don't have power method fo integer, we have to use force coverion here.
    (int)Math.pow(26, s.length() - 1 - i);
    
    static double pow(double a, double b)
    Returns the value of the first argument raised to the power of the second argument.

    Solution:

    public class Solution {
        public int titleToNumber(String s) {
            if (s == null)
                throw new IllegalArgumentException("the passed in argument is invalid.");
            int res = 0;
            for (int i = 0; i < s.length(); i++) {
                int digit_weight = (int)Math.pow(26, s.length() - 1 - i);
                res += (s.charAt(i) - 'A' + 1) * digit_weight;
            }
            return res;
        }
    }
  • 相关阅读:
    todo-list
    codeforces 794 (#414 DIV1+DIV2)
    2018bnu校赛总结
    codeforces 743D
    HDU-2196 Computer (树形DP)
    HDU- 1005 Number Sequence(矩阵快速幂)
    HDU- 4000 Fruit Ninja(树状数组)
    codeforces 505C
    codeforces 286B
    codeforces 3D
  • 原文地址:https://www.cnblogs.com/airwindow/p/4774978.html
Copyright © 2011-2022 走看看