leetcode题目来源于:https://leetcode-cn.com/problems/excel-sheet-column-title/
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
例如:
A -> 1
B -> 2
C -> 3
…
Z -> 26
AA -> 27
AB -> 28
…
示例 1:
输入:columnNumber = 1
输出:“A”
示例 2:
输入:columnNumber = 28
输出:“AB”
示例 3:
输入:columnNumber = 701
输出:“ZY”
示例 4:
输入:columnNumber = 2147483647
输出:“FXSHRXW”
对题目进行解析,A~Z是1到26 与26进制不同的是,十六进制是0到25,只有将数据每次减一才符合进制转换,接下来只需要进行,将十进制转换成十六进制,再将十六进制数字转换成Unicode 编码
function convertToTitle(columnNumber) {
var str = ""
while (columnNumber >= 1) {
columnNumber--
//将余数在代表的字符,通过str储存起来
str += String.fromCharCode("A".charCodeAt() + columnNumber % 26);
console.log("str", str, columnNumber % 26, columnNumber / 26);
//columnNumber,被除数更新为商的值
columnNumber = Math.floor(columnNumber / 26);
}
console.log("str",str.split("").reverse().join(""))//将字符串进行翻转,先字符串转换成数组,再将数组翻转,再将翻转后的数组转换成字符串
return str.split("").reverse().join("")
};
convertToTitle(51)//AY
知识点:
1.String.fromCharCode(65)----A
将 Unicode 编码转为一个字符:
var n = String.fromCharCode(65);
2.“A”.charCodeAt()—65
返回字符串第一个字符的 Unicode 编码(H 的 Unicode 值):
var str = "HELLO WORLD";
var n = str.charCodeAt(0);
"A".charCodeAt()
3.Math.floor() 返回小于或等于一个给定数字的最大整数。
备注:可以理解 Math.floor()为向下取整
Math.floor(25.11)
//25
4.str.split("").reverse().join("")
let str="AY"
var num = str.split("").reverse().join("")
//str--AY
//num--YA