题目
给你一个字符串 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
示例 4:
输入: columnTitle = "FXSHRXW"
输出: 2147483647
提示:
1 <= columnTitle.length <= 7
columnTitle 仅由大写英文组成
columnTitle 在范围 ["A", "FXSHRXW"] 内
解题思路
//import Foundation
class Solution {
func titleToNumber(_ columnTitle: String) -> Int {
//比较迂回的方法
// var number = 0
// var strList = columnTitle.utf8CString
// strList.popLast()
// // 记录位数
// var count = 0
// for (_,value) in strList.enumerated().reversed() {
// // 真实位数
// let num = Int(value - 64)
// print(count)
// // 每一位用【数值*26^位数】然后累积
// number = number + num * Int(pow(26,Double(count)))
// count += 1
//// print(number)
// }
// return number
//比较简洁的方法
var res = 0
for char in columnTitle {
let num = Int(char.unicodeScalars.first!.value - 64)
res = res * 26 + num
print(res)
}
return res
}
}
let columnTitle1 = "AAB"
let columnTitle2 = "B"
let res = Solution().titleToNumber(columnTitle1)
print("res:\(res)")
网友评论