测试一个数组是否包含第二个数组中的任何元素的最有效的方法是什么?
下面的两个例子,试图回答问题foods
是否包含cheeses
中的任何元素:
cheeses = %w(chedder stilton brie mozzarella feta haloumi reblochon)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)
puts cheeses.collect{|c| foods.include?(c)}.include?(true)
puts (cheeses - foods).size < cheeses.size
字符串
6条答案
按热度按时间nwsw7zdq1#
字符串
正如Marc-André Lafortune在评论中所说,
&
在线性时间内工作,而any?
+include?
将是二次的。对于较大的数据集,线性时间将更快。对于小数据集,any?
+include?
可能更快,如Lee Jarvis的答案所示-可能是因为&
分配了一个新的Array,而另一个解决方案没有,并且作为一个简单的嵌套循环返回布尔值。gopyfrb32#
如何使用Enumerable#any?
字符串
基准脚本:
型
测试结果:
型
6yt4nkrj3#
您可以检查交叉点是否为空。
字符串
1tuwyuhd4#
字符串
tvokkenx5#
字符串
7vux5j2d6#
你可以使用
intersect?
,因为ruby 3.1**字符串