我知道这个问题以某种形式被问过,但我特别想要将其用于字符串,并且比 .include? 更快的方法。
我想在一个有序的字符串列表(按字母顺序)上使用它。
我知道这个问题以某种形式被问过,但我特别想要将其用于字符串,并且比 .include? 更快的方法。
我想在一个有序的字符串列表(按字母顺序)上使用它。
array = ["aardvark", "amazon", "binary", "zelda"]
array.bsearch { |s| s >= "binary" }
# => "binary"
array.bsearch { |s| s >= "binaries" }
# => "binary"
要找到精确匹配,
array.bsearch { |s| "binary" <=> s }
# => "binary"
array.bsearch { |s| "binaries" <=> s }
# => nil
这是一个与字符串无关的Array
功能;只要按照顺序排序,您可以为任何可以实现比较器的内容使用bsearch
。
s <=> "binary"
),这个条件是用于数组倒序排列的。由于 "binary" 在中间,bsearch
从它开始,并且得到了正确的结果。纯粹是愚蠢的运气。 - Amadan