import scala.collection.mutable.BitSet
class SuccinctBitVector(str:String) {
var vector = new BitSet()
for (i <- 0 until str.size) {
if ("1" == str(i).toString) vector += i
}
println(vector(0))
def rank(b:Int, index:Int) : Int = {
var count = 0
val expected = (b == 1)
for (i <- 0 to index) {
if (expected == vector(i)) count += 1
}
return count;
}
def select(b:Int, index:Int) : Int = {
val expected = (b == 1)
for (i <- 0 to index) {
if (expected == vector(i)) return i
}
return -1
}
}
var sucbv = new SuccinctBitVector("10010");
println(sucbv.rank(1, 3))
println(sucbv.select(1, 3))