Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例 1:
输入: 1
输出: “A”
示例 2:
输入: 28
输出: “AB”
本质上是进制转换的问题,将对应的十进制转换为26进制,需要注意的是这道题中十进制从1开始,所以对应的代码中要做相应的-1操作。
func convertToTitle(n int) string {
str := ""
for n > 0 {
c := (n - 1) % 26
str = string('A' + c) + str
n = (n - 1) / 26
}
return str
}
Excel表列序号
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
和上面的相反,本质上是将26进制对应转化为10进制,遍历时将每个字母与A做减法,因为A表示1,所以减法后需要每个数加1,计算其代表的数值num = 字母 - ‘A’ + 1
,因为有26个字母,所以相当于26进制,每26个数则向前进一位,所以每遍历一位则ans = ans * 26 + num
。
func titleToNumber(s string) int {
ans := 0
for _, val := range s {
num := int(val - 'A') + 1
ans = ans * 26 +num
}
return ans
}