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; }

【Excel表列序号(15-14)】ps:进制转换的问题,26的N次方
  • 复杂度分析
  • 时间复杂度: O(n) 对于每个元素,通过一次遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n)
    的时间。
  • 空间复杂度: O(1)
  • 由于算法中临时变量得个数与循环次数无关,所以空间复杂度为 O(1)
如果你觉得可以请扫描我的公众号 Excel表列序号(15-14)
文章图片
洲洲

    推荐阅读