27 lines
377 B
Go
27 lines
377 B
Go
package q1461
|
|
|
|
func hasAllCodes(s string, k int) bool {
|
|
if len(s) < (1<<k)+k-1 {
|
|
return false
|
|
}
|
|
seen := make([]bool, 1<<k)
|
|
nSeen := 0
|
|
|
|
c := 0
|
|
for i := range len(s) {
|
|
c = (c << 1) + int(s[i]-'0')
|
|
if i+1 >= k {
|
|
if i >= k {
|
|
c -= int(s[i-k]-'0') << k
|
|
}
|
|
|
|
if !seen[c] {
|
|
seen[c] = true
|
|
nSeen++
|
|
}
|
|
}
|
|
}
|
|
return nSeen == 1<<k
|
|
}
|
|
|
|
var _ = hasAllCodes
|