我有一个数组,它有元素[50, 20, 20, 5, 2],叫做coins_used
我需要计数,然后输出一个硬币在数组中出现的次数。使用coin_used x frequency的输出。
不管怎样,我可以计算一个元素在数组中出现的次数吗,输出必须完全如下:
50x1,20x2,5x1,2x1
怎么做才是最简单的?

最佳答案

使用Array#uniq,可以获得数组的唯一元素。Array#count将返回在数组中找到的项目数。
通过joining带有,的映射数组,您可以得到您想要的:

a = [50,20,20,5,2]
a.uniq.map { |x| "#{x}x#{a.count(x)}" }.join(',')
# => "50x1,20x2,5x1,2x1"

更新使用Hash计数的更有效版本。
a = [50,20,20,5,2]
freq = Hash.new(0)
a.each { |x| freq[x] += 1 }
freq.map{ |key, value| "#{key}x#{value}" }.join(',')
# => "50x1,20x2,5x1,2x1"

08-26 08:01
查看更多