前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 171. Excel 表列序号(swift)

LeetCode 171. Excel 表列序号(swift)

原创
作者头像
freesan44
修改2021-08-18 14:25:11
7130
修改2021-08-18 14:25:11
举报
文章被收录于专栏:freesan44freesan44

题目

给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。

例如,

代码语言:txt
复制
A -> 1
代码语言:txt
复制
B -> 2
代码语言:txt
复制
C -> 3
代码语言:txt
复制
...
代码语言:txt
复制
Z -> 26
代码语言:txt
复制
AA -> 27
代码语言:txt
复制
AB -> 28 
代码语言:txt
复制
...
代码语言:txt
复制
示例 1:

输入: columnTitle = "A"
输出: 1
示例 2:

输入: columnTitle = "AB"
输出: 28
示例 3:

输入: columnTitle = "ZY"
输出: 701
示例 4:

输入: columnTitle = "FXSHRXW"
输出: 2147483647
 

提示:

1 <= columnTitle.length <= 7

columnTitle 仅由大写英文组成

columnTitle 在范围 "A", "FXSHRXW" 内

解题思路

代码语言:txt
复制
//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)")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解题思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档