我试图在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
再次救援。(我承认,@ user123的回答更为直接,除非你假装Array#difference
已经是一个内置的方法,Array#difference
可能是更有效的两个人,因为它避免了反复调用count
。)请参阅我的答案在这里进行的说明方法及其使用链接。简而言之,它与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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句