1. 题目描述
给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: “A”
输出: 1
示例 2:
输入: “AB”
输出: 28
示例 3:
输入: “ZY”
输出: 701
2. 思路
2.1 思路1
构建1个map字典,进行字符串解析
2.2 思路2
26进制的思想
3. 代码
3.1. 思路1代码
func titleToNumber(s string) int {
table := map[byte]int{
'A' : 1,
'B' : 2,
'C' : 3,
'D' : 4,
'E' : 5,
'F' : 6,
'G' : 7,
'H' : 8,
'I' : 9,
'J' : 10,
'K' : 11,
'L' : 12,
'M' : 13,
'N' : 14,
'O' : 15,
'P' : 16,
'Q' : 17,
'R' : 18,
'S' : 19,
'T' : 20,
'U' : 21,
'V' : 22,
'W' : 23,
'X' : 24,
'Y' : 25,
'Z' : 26,
}
res := 0
for i := len(s)-1; i >= 0; i-- {
multi := 1
for j := 0; j < i; j++ {
multi *= 26
}
res += table[s[len(s)-1-i]] * multi
}
return res
}
思路2代码
func titleToNumber(s string) int {
res := 0
for i := 0; i < len(s); i++ {
res = res * 26 + int(s[i] - 'A' + 1)
}
return res
}