LeetCodeに毎日挑戦してみた 168. Excel Sheet Column Title(Python、Go)


Leetcodeとは

leetcode.com
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。

38問目(問題168)

168. Excel Sheet Column Title

問題内容

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"

考え方

  1. 数字を文字に変換する方針で解いていきます。ASCIIを知っているとわかりやすいです

  2. 26文字で一周なので26で割りながら0になったらループを終了します

  3. 最終的にresが逆順になっているので反転して返します。

解答コード

class Solution:
    def convertToTitle(self, n: int) -> str:
        res = ""
        while n > 0:
            n -= 1  # 26 -> "Z"
            res += chr(n % 26 + ord('A'))
            n //= 26
        return res[::-1]
  • Goでも書いてみます!
func convertToTitle(n int) string {
    result := ""
    for {
        if n <= 26 {
            result = string(n+64) + result
            break
        } else {
            result = string((n-1)%26+1+64) + result
            n = (n - 1) / 26
        }
    }
    return result
}