Ruby中是否有用于字符串的bsearch函数?

3

我知道这个问题以某种形式被问过,但我特别想要将其用于字符串,并且比 .include? 更快的方法。

我想在一个有序的字符串列表(按字母顺序)上使用它。

1个回答

7
找到最接近的(单向)
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


如果我执行 array.bsearch { |s| s <=> "amazon" },为什么会得到 => nil? - franz kafka
除了“binary”之外,数组中的其他元素相同。 - franz kafka
2
因为我太蠢了,纯属运气好,搞定了 "binary"。我会进行编辑和更正... 我把条件反过来了 (s <=> "binary"),这个条件是用于数组倒序排列的。由于 "binary" 在中间,bsearch 从它开始,并且得到了正确的结果。纯粹是愚蠢的运气。 - Amadan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接