
Code
func hasAllCodes(s string, k int) bool {
length := len(s)
if length < k {
return false
}
seen := make(map[int]struct{})
num := 0
for i := 0; i < k; i++ {
num = num * 2 + int(s[i] - '0')
}
seen[num] = struct{}{}
for i := k; i < length; i++ {
left := int(s[i - k] - '0') << (k - 1)
num = (num - left) * 2 + int(s[i] - '0')
seen[num] = struct{}{}
fmt.Println(num)
}
return len(seen) == (1 << k)
}