Excel表列序号(15-14)

题解和思路

  • 思路
 * 因为有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))