168. Excel Sheet Column Title

146 阅读1分钟

题目描述

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...

Example 1:
Input: 1
Output: "A"

Example 2:
Input: 28
Output: "AB"

Example 3:
Input: 701
Output: "ZY"

解题思路

这个题目其实就是十进制转26进制, 我们可以使用 ascii码来做, 只用 'A' 加上对应的值, 就可以得到对应是字符, 每次计算时先 -1 是一个非常巧妙的方法: 因为我们是从 'A'开始加, 已经是 加1了 所以减去

示例代码

func convertToTitle(_ n: Int) -> String {

    let A: Character = "A"
    var temp = n
    var result = ""
    while temp != 0 {
        temp -= 1
        let remainder = UInt8(temp % 26)
        let c = Character(UnicodeScalar(A.asciiValue! + remainder))
        result = String(c) + result
        temp = temp / 26
    }
    return result
}