168.Excel列表名称
Document
2020-03-16
Excel表列名称
1 -> A。
2 -> B: 26 -> Z 27 -> AA 28 -> AB
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(''); // 返回字符串类型 };