1. 程式人生 > >171. Excel Sheet Column Number

171. Excel Sheet Column Number

appear 每次 ret str ash dict hash 公式 put

171. 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 
    ...

Example 1:

Input: "A"
Output: 1

Example 2:

Input: "AB"
Output: 28

Example 3:

Input: "ZY"
Output: 701

  這個,看完題目思路就很清晰了,完成一個26進制數轉10進制數的算法,根據進制轉換公式可知
    AA = 1*26^(2-1) + 1*26^(1-1) = 27,根據這個思路可寫出代碼:
    public  int titleToNumber(String s) {
        char[] str = s.toCharArray();
        int sum = 0;
        for (int i = str.length, j = 0; i > 0; i--, j++) {
            sum 
+= (int) (dictionary.get("" + str[j]) * Math.pow(26, i - 1)); } return sum; } private static Map<String, Integer> dictionary = new HashMap<String, Integer>() { { put("A", 1); put("B", 2); put("C", 3); put("D", 4); put(
"E", 5); put("F", 6); put("G", 7); put("H", 8); put("I", 9); put("J", 10); put("K", 11); put("L", 12); put("M", 13); put("N", 14); put("O", 15); put("P", 16); put("Q", 17); put("R", 18); put("S", 19); put("T", 20); put("U", 21); put("V", 22); put("W", 23); put("X", 24); put("Y", 25); put("Z", 26); } };

  提交答案後發現,不能每次都piapia直接寫,仔細考慮考慮能少寫不少代碼,s中的某一位很簡單就能得到數字和字母的映射關系,這個map寫的手累不說,看起來也很傻??。   

    s.charAt(i) - ‘A‘ + 1

171. Excel Sheet Column Number