"refactor(common): 重构序列化工具包,将serialize重命名为utils并添加bitset组件"
This commit is contained in:
46
common/utils/bitset/bitset64.go
Normal file
46
common/utils/bitset/bitset64.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package bitset32
|
||||
|
||||
import (
|
||||
bitset64 "github.com/bits-and-blooms/bitset"
|
||||
)
|
||||
|
||||
type BitSet64 struct {
|
||||
*bitset64.BitSet
|
||||
}
|
||||
|
||||
// TODO: TestFunc
|
||||
func (b *BitSet64) MaxConsecutiveOne(start, end uint) uint {
|
||||
return b.continueMaxCount(start, end, true)
|
||||
}
|
||||
|
||||
func (b *BitSet64) MaxConsecutiveZero(start, end uint) uint {
|
||||
return b.continueMaxCount(start, end, false)
|
||||
}
|
||||
|
||||
func (b *BitSet64) continueMaxCount(start, end uint, flag bool) uint {
|
||||
flag = !flag
|
||||
if end > b.Len() {
|
||||
end = b.Len()
|
||||
}
|
||||
if start >= b.Len() {
|
||||
return 0
|
||||
}
|
||||
if start > end {
|
||||
return 0
|
||||
}
|
||||
rt, sum := uint(0), uint(0)
|
||||
for i := start; i < end; i++ {
|
||||
if xor(flag, b.Test(i)) {
|
||||
sum++
|
||||
continue
|
||||
}
|
||||
if sum > rt {
|
||||
rt = sum
|
||||
}
|
||||
sum = 0
|
||||
}
|
||||
if sum > rt {
|
||||
rt = sum
|
||||
}
|
||||
return rt
|
||||
}
|
||||
Reference in New Issue
Block a user