Leetcode Note: Go - Convert a Number to Hexadecimal

Add Binary - LeetCode
https://leetcode.com/problems/add-binary/

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

所感

  • int num が渡されるので 16進数 文字列に変換して return する

回答

Go solution beats 100% O(1) space - LeetCode Discuss
https://leetcode.com/problems/convert-a-number-to-hexadecimal/discuss/376059/Go-solution-beats-100-O(1)-space

func toHex(num int) string {
	const (
		hexCharacters = "0123456789abcdef"
		mask          = 0xf
	)
	var result = make([]byte, 8)
	var nonzeroIndex = 7

	for i := 7; i >= 0; i-- {
		val := num & mask
		if val > 0 {
			nonzeroIndex = i
		}
		result[i] = hexCharacters[val]
		num >>= 4
	}
	return string(result[nonzeroIndex:])
}
  • 16進数 で使用する文字を定義しておく
  • 数値と 0xf の論理積で文字列はおいて 16進数化 する
  • 16進数化 した数値に対応する文字列に変換していく
  • 16進数は 2進数 を 4bit 単位で扱うものなので num >>= 4 というビット演算で、次のループ向けに数値を調整する
  • return する用の byte 配列から 0 ではない値を string にキャストして return して終了