add new solutions
This commit is contained in:
parent
7d2a6718b3
commit
1f0aa6d417
6 changed files with 258 additions and 0 deletions
37
solutions/19/q1980/solution.go
Normal file
37
solutions/19/q1980/solution.go
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue