Leetcode Note: Go - Excel Sheet Column Title

Excel Sheet Column Title - LeetCode
https://leetcode.com/problems/excel-sheet-column-title/

  • Go 言語で取り組んだメモ

所感

  • 与えられた数値をアルファベットに変換する
  • 数値を変換する式が組めれば出来そう

回答

0ms Golang solution - LeetCode Discuss
https://leetcode.com/problems/excel-sheet-column-title/discuss/51479/0ms-Golang-solution

const ALPHABETS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

func reverse(b []byte){
    for i, j := 0, len(b)-1; i < j; i, j = i + 1, j - 1{
        b[i] , b [j] = b[j], b[i]
    } 
}

func convertToTitle(n int) string {
    var b []byte
    for ; n > 0; n = (n - 1) / 26 {
        b = append(b, ALPHABETS[(n - 1) % 26])
    }
    reverse(b)
    return string(b)
}
  • for ループの書き方で、カウンターを 2つ 定義するやりかた新鮮
    • 一見複雑だが for ループを2重にするより効率的
  • アルファベットは全26種類で固定なので 26 で除算したものをスライスに格納していき、反転して return すれば良い
    • この for ループの書き方も面白い
    • シンプルにインクリメントかデクリメントするだけでなく、ループ条件は指定できる