LeetCode171.Excel表列序号Golang版

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
}