30 lines
512 B
Go
30 lines
512 B
Go
// Package q1545 implements a solution for https://leetcode.com/problems/find-kth-bit-in-nth-binary-string/
|
|
package q1545
|
|
|
|
var buf = make([]byte, 1<<20)
|
|
var bufLen = 1
|
|
|
|
func init() { buf[0] = '0' }
|
|
|
|
func generate() {
|
|
buf[bufLen] = '1'
|
|
newTail := bufLen * 2
|
|
for i := range bufLen {
|
|
switch buf[i] {
|
|
case '0':
|
|
buf[newTail-i] = '1'
|
|
case '1':
|
|
buf[newTail-i] = '0'
|
|
}
|
|
}
|
|
bufLen = newTail + 1
|
|
}
|
|
|
|
func findKthBit(n, k int) byte {
|
|
for bufLen < k {
|
|
generate()
|
|
}
|
|
return buf[k-1]
|
|
}
|
|
|
|
var _ = findKthBit
|