// 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