lc-go/solutions/14/q1461/solution.go
2026-03-01 13:47:13 +09:00

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