在Ruby中使用整数输出重复变量的阵列计数



我是Ruby的新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中最频率出现的数量。假设动物是一系列弦。编写一组Ruby语句,以报告输出数组中的单词" CAT"的次数。例如,如果阵列动物的内容具有["猫","狗","猫","猫","牛"],则您的脚本应该写出数字3。到目前为止,这是我到目前为止的东西,这给了我猫的输出,但我只想显示它重复的次数。谢谢!

array = [ "cat", "dog", "cat", "cat", "cow" ]
repeat_item = array.uniq.max_by{ |i| array.count( i ) }
puts repeat_item 

因此,通过问题的措辞,我们只关心字符串cat的出现数量:

array.count { |x| x == 'cat' }
=> 3
puts array.select{|e|e=='cat'}.count

阅读评论后,我添加了另一个解决方案,该解决方案应满足其他要求:

array = [ "cat", "dog", "cat", "cat", "cow", "cow", "cow" ]
repeat_item = array.uniq.each_with_object({}){|x, result| result[x] = array.count(x) }
max_count = repeat_item.values.max
max_item = repeat_item.key(max_count)
puts "#{max_item}: #{max_count}"

我故意离开了变量来说明方法。请注意,如果某些条目相同,则会产生第一个

另一个解决方案:一行,但不容易理解

puts array.group_by{|i| i }
     .max_by{|i,v| v.count }
     .instance_eval{|i| "#{i.first}: #{i.last.count}"}

最新更新