我是ruby的新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中出现频率最高的数字。假设动物是一系列的弦。编写一组Ruby语句,报告输出单词“cat”出现在数组中的次数。例如,如果数组动物具有[“cat”,“dog”,“cat”,“cat”,“cow”]的内容,则您的脚本应写出数字3。 这是我到目前为止,它给了我一个猫的输出,但我想只显示它重复多少次。谢谢!
array = [ "cat", "dog", "cat", "cat", "cow" ]
repeat_item = array.uniq.max_by{ |i| array.count( i ) }
puts repeat_item
答案 0 :(得分:1)
因此,通过问题的措辞,我们只关心字符串cat
的出现次数:
array.count { |x| x == 'cat' }
=> 3
答案 1 :(得分:0)
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}"}