gpt4 book ai didi

arrays - 在数组 Ruby 中查找重复项

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

我试图在 1 到 1000000 之间的字符串数组中查找重复值。

但是,使用我的代码,我得到的输出是所有条目都加倍了。

例如,如果我有 [1,2,3,4,3,4],它会给我输出 3 4 3 4 而不是 3 4。

这是我的代码:

array = [gets]

if array.uniq.length == array.length
puts "array does not contain duplicates"
else
puts "array does contain duplicates"
print array.select{ |x| array.count(x) > 1}
end

此外,每次我测试我的代码时,我都必须将数组定义为 array = [1,2,3,4,5,3,5]puts 有效,但当我使用数组 [gets] 时它不打印。

谁能帮我解决这两个问题?

最佳答案

我多么希望我们有一个内置方法Array#difference:

class Array
def difference(other)
h = other.tally
reject { |e| h[e] > 0 && h[e] -= 1 }
end
end

虽然@user123 的回答更直接。 (Array#difference 可能是两者中效率更高的,因为它避免了重复调用 count。)参见我的回答 here有关该方法的说明及其使用链接。

简而言之,它不同于Array#-如以下示例所示:

a = [1,2,3,4,3,2,4,2]
b = [2,3,4,4,4]

a - b #=> [1]
a.difference b #=> [1, 3, 2, 2]

对于目前的问题,如果:

arr = [1,2,3,4,3,4]

重复元素由:

arr.difference(arr.uniq).uniq
#=> [3, 4]

关于arrays - 在数组 Ruby 中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611939/

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