进制转换
# 进制转换
# lc171. Excel 表列序号简单
题目描述
给你一个字符串 columnTitle
,表示 Excel 表格中的列名称。返回该列名称对应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
示例 1:
输入: columnTitle = "A"
输出: 1
1
2
2
示例 2:
输入: columnTitle = "AB"
输出: 28
1
2
2
示例 3:
输入: columnTitle = "ZY"
输出: 701
1
2
2
示例 4:
输入: columnTitle = "FXSHRXW"
输出: 2147483647
1
2
2
思路
没什么好说的,参考二进制转十进制
var titleToNumber = function(columnTitle) {
let res = 0
for(let i = columnTitle.length - 1; i >=0; i--) {
res += 26 ** (columnTitle.length - i - 1) * (columnTitle[i].charCodeAt() - 'A'.charCodeAt() + 1)
}
return res
};
1
2
3
4
5
6
7
2
3
4
5
6
7
# lc168. Excel表列名称简单
题目描述
给你一个整数 columnNumber
,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
示例 1:
输入:columnNumber = 1
输出:"A"
1
2
2
示例 2:
输入:columnNumber = 28
输出:"AB"
1
2
2
示例 3:
输入:columnNumber = 701
输出:"ZY"
1
2
2
示例 4:
输入:columnNumber = 2147483647
输出:"FXSHRXW"
1
2
2
var convertToTitle = function(n) {
//10进制转26进制,取余法
let res = "";
while(n > 0){
let temp = n % 26;
n = Math.floor(n / 26);
if(temp == 0){
temp = 26;
n--;
}
res = String.fromCharCode(temp + 64) + res;
}
return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
#
上次更新: 2022/03/14, 11:48:12