进制转换
思路:
相当于 10 进制转换为 26 进制的数
需要一个循环结构,不断/26,余数为最后一位
然后把每位转成 A-Z 的字母
和进制转换的区别,这个没有 0。。带来的影响就是不能像 10 进制一样除以 10 除以 10,因为他有 0,这个 26 进制除 26 也不行,除 27 也不行。
func convertToTitle(columnNumber int) string {
curVal := columnNumber
result := ""
for curVal != 0 {
curVal-- // 这一步很关键,它确保了从0开始计数,使得26的倍数正好对应于'Z'
yu := curVal % 26
result = digitToAlpha(yu+1) + result // 由于之前已经减了1,这里需要加1来恢复正确的余数值
curVal = curVal / 26
}
return result
}
func digitToAlpha(val int) string {
//把1-26转换为A-Z
return string(rune('A' + val - 1))
}