lc-go/solutions/19/q1980/solution.go
2026-03-21 14:44:40 +09:00

37 lines
687 B
Go

// Package q1980 implements a solution for https://leetcode.com/problems/find-unique-binary-string/
package q1980
import "slices"
func toNumber(s string) int {
ret := 0
for i := range len(s) {
ret = ret<<1 + int(s[i]-'0')
}
return ret
}
func fromNumber(n, length int) string {
buf := make([]byte, length)
for i := range length {
buf[i] = byte(n&1) + '0'
n >>= 1
}
slices.Reverse(buf)
return string(buf)
}
func findDifferentBinaryString(nums []string) string {
slices.Sort(nums)
last := -1
for i := range nums {
num := toNumber(nums[i])
if num > last+1 {
break
}
last = num
}
return fromNumber(last+1, len(nums[0]))
}
var _ = findDifferentBinaryString