scalaのBitVector

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))