给定一个正整数,返回它在 Excel 表中相对应的列名称。
1 => A;
2 => B;
3 => C
…
26 => Z;
27 => AA;
28 => AB;
29 => AC
…
52 => AZ;
53 => BA;
54 => BB
…
// 实现下方函数
function convert(num) { // TODO }
// 测试代码:
const output1 = convert(1);
console.log(output1); // A
const output2 = convert(26);
console.log(output2); // Z
const output3 = convert(53);
console.log(output3); // BA
// 理解 其实,这道题很明显是一道10进制转26进制的题目。 主要需要考虑到2个因素
// 1. 1-26 分别对应 A-Z,没有0;
// 2. 超过26进A。(和原来的满10进1是一个道理)
function convert (columnNumber) {
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’];
// 小于等于26,直接返回
let n = columnNumber;
if (n <= 26) return arr[n - 1];
let res = ‘’;
while (n > 0) {
// n先减1. 因为数组arr 下标是从0开始。 而题目是从1开始
n–;
// 从后往前拼接
res = arr[n % 26] + res;
n = Math.floor(n / 26); // 取整。
}
return res;
};
};
深度优先遍历
先给定一个二叉树数据
const tree = {
value: “-”,
left: {
value: ‘+’,
left: {
value: ‘a’,
},
right: {
value: ‘*’,
left: {
value: ‘b’,
},
right: {
value: ‘c’,
}