美文网首页
Excel表列序号(15-14)

Excel表列序号(15-14)

作者: 洲洲哥 | 来源:发表于2020-07-21 15:30 被阅读0次

    题解和思路

    • 思路
     * 因为有26个字母,相当于 26 进制转 10 进制 
     * 详解
     * 1. 26 进制 转化 10 进制公式,ans = ans * 26 + num 
     * 2. 比如:AB = 126 +2 = 28,ZY=2626+25 = 701
    
     * 示例
     * A->1
     * B->2
     * C->3
     * ...
     * Z->26
     * AA->27
     * AB->28
     * 输入: "A",
     * 输出:1
     * 输入: "AB",
     * 输出: 28
    

    代码如下

    const titleToNumber = function(s){
        const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
        const len = s.length;
        let sum = 0;
        for (let index = 0; index < len; index++) {
            const tempLeft = arr.indexOf(s[index]) + 1;
            const tempRight = Math.pow(26,len - 1 - index);
            sum = tempLeft * tempRight + sum;
        }
        return sum;
    }
    

    ps:进制转换的问题,26的N次方

    • 复杂度分析
    • 时间复杂度: O(n) 对于每个元素,通过一次遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n)
      的时间。
    • 空间复杂度: O(1)
    • 由于算法中临时变量得个数与循环次数无关,所以空间复杂度为 O(1)
    如果你觉得可以请扫描我的公众号
    洲洲

    相关文章

      网友评论

          本文标题:Excel表列序号(15-14)

          本文链接:https://www.haomeiwen.com/subject/zgbikktx.html