zoukankan      html  css  js  c++  java
  • 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 

    题目大意:给出一个Excel中的列标,请输出它对应的列数。
    题目分析:大致是一个二十六进制转化为十进制的计算。A-Z表示1-26,给出字符串后,第n位字符 * 26^第n位字符次方一次相加,因此需要一个map来映射A-Z对应的1-26个数字,然后相乘并相加即可。
    代码如下:(解法一)
    public class Solution {
        public int titleToNumber(String s) {
            HashMap<Character, Integer> h = new HashMap<Character, Integer>();
            h.put('A', 1);
            h.put('B', 2);
            h.put('C', 3);
            h.put('D', 4);
            h.put('E', 5);
            h.put('F', 6);
            h.put('G', 7);
            h.put('H', 8);
            h.put('I', 9);
            h.put('J', 10);
            h.put('K', 11);
            h.put('L', 12);
            h.put('M', 13);
            h.put('N', 14);
            h.put('O', 15);
            h.put('P', 16);
            h.put('Q', 17);
            h.put('R', 18);
            h.put('S', 19);
            h.put('T', 20);
            h.put('U', 21);
            h.put('V', 22);
            h.put('W', 23);
            h.put('X', 24);
            h.put('Y', 25);
            h.put('Z', 26);
            
            char[] ch = s.toCharArray();
            int col = 0;
            for(int i=0; i<ch.length; i++ ){
                int val = h.get(ch[i]);
                col = (int) (col + Math.pow(26, ch.length-1-i)*val);
            }
            
            return col;
        }
    }

     解法二:

    后来看到其他人有另外一种解法,代码更加简洁优美,思想也是朴素的二十六进制转化为十进制。举例:CAA来说,首先去除s[0]=C,它对应的数字是3,且是第三位,因此它的贡献是3*26^(3-1),而它后面刚好还有2为,因此出去它自己的位数后,还有2次机会可以乘26,因此可以用res = res * 26 + (s[i]-'A'+1)表示,代码如下:

    public class Solution {
        public int titleToNumber(String s) {
            int col = 0;
            char[] a = s.toCharArray();
            for(char c : a){
                col = col * 26 + (c-'A'+1);
            }
            
            return col;
        }
    }
  • 相关阅读:
    bzoj1036 [ZJOI2008]树的统计Count(树链剖分)
    poj2348 Euclid's Game
    bzoj3575 [Hnoi2014]道路堵塞
    poj2484 A Funny Game
    bzoj2286 [Sdoi2011]消耗战
    虚树学习笔记
    bzoj4518 [Sdoi2016]征途
    node.js开发环境配置
    js中阻止事件冒泡和浏览器默认行为
    css3 background-clip和background-origin 区别
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/4513835.html
Copyright © 2011-2022 走看看