gpt4 book ai didi

arrays - 计算数组中的匹配元素

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:00 24 4
gpt4 key购买 nike

给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?
例如:

  1. [0,0,5][0,5,5] 将返回 2 的匹配项,因为有一个 0 和一个 5 共同;
  2. [1,0,0,3][0,0,1,4] 将返回 3 的匹配项,因为0有两场,1有一场;
  3. [1,2,2,3][1,2,3,4] 将返回 3 的匹配项。

我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的 Ruby 习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。

最佳答案

您可以使用 count 完成它:

a.count{|e| index = b.index(e) and b.delete_at index }

Demonstration

或使用 inject :

a.inject(0){|count, e| count + ((index = b.index(e) and b.delete_at index) ? 1 : 0)}

Demonstration

或使用 selectlength (或其别名size):

a.select{|e| (index = b.index(e) and b.delete_at index)}.size

Demonstration

结果:

  1. a, b = [0,0,5], [0,5,5] 输出: => 2;
  2. a, b = [1,2,2,3], [1,2,3,4] 输出: => 3;
  3. a, b = [1,0,0,3], [0,0,1,4] 输出 => 3.

关于arrays - 计算数组中的匹配元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com