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 して終了