题目描述
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: columnTitle = "A"
输出: 1
示例 2:
输入: columnTitle = "AB"
输出: 28
示例 3:
输入: columnTitle = "ZY"
输出: 701
题解
思路:进制转化
Excel 表的列名称由大写字母组成,大写字母共有26 个,因此列名称的表示实质是26 进制,需要将26 进制转换成十进制
static public func titleToNumber(_ columnTitle: String) -> Int {
let cStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
let cArray = Array(cStr)
var dict:[Character:Int] = [Character:Int]()
for i in 0..<cArray.count {
dict[cArray[i]] = i+1
}
let titleArray = Array(columnTitle)
var ans = 0
for i in 0..<titleArray.count {
ans = 26*ans + (dict[titleArray[i]] ?? 0)
}
return ans
}
参考:https://leetcode-cn.com/problems/excel-sheet-column-number