168.Excel列表名称

Document

2020-03-16
Excel表列名称
1 -> A。
2 -> B: 26 -> Z 27 -> AA 28 -> AB
题解:
思路1:数学
/**
 * @param {number} n
 * @return {string}
 */
var convertToTitle = function (n) {
  let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // 26个字母数组
  let i;
  let result = []; // 空数组放每一位对应的字母
  while (n > 26) { // 当n大于26时说明不止一位
    i = Math.floor(n % 26); // n/26取余数,余数就是此时最低位对应的字母
    if(i === 0) { // 当n是26的倍数是取余为0,要做特殊处理
      i = 26; // 例如当n=52, ÷26取余为0 而此时对应的值应该是Z 所以赋值26
      n--; // 当取余为0时, 下面对n/26取整会多1,所以减去1那么取整时也会小1
    }
    result.unshift(str[i - 1]); // 向数组的最前面插入对应字母
    n = Math.floor(n / 26); // n÷26取整判断是否要进行下一次循环
  }
  result.unshift(str[n - 1]); // 退出循环后要把剩下的n也插入到最前面
  return result.join(''); // 返回字符串类型
};

 

 

posted @ 2020-03-16 09:10  蓝小胖纸  阅读(187)  评论(0编辑  收藏  举报