对哈希值的操作:Ruby

Operation on values in a hash: Ruby

我的输入是:

aaabbbb

我写了下面的代码:

here = string.split(//)

 count = Hash.new(0)
 there = here.each {|a|
 count[a] += 1
}

这给了我以下输出:

{"a"=>3, "b"=>4}

现在,如果我的输出是:

,我想检查散列中奇数的数量
{"a"=>3, "b"=>4, "c"=>3}

那么答案应该是:

2

注意:我这样做是为了检查 aaabbbb 是否可以形成一个可能是回文的字谜。所以如果有超过2个奇数字符,那么它就不会形成回文,反之亦然。

只需使用count方法。

count.count{|k,v| v.odd?}

您可以通过迭代 counteach_value 然后 select 然后检查 length

count.each_value.select { |n| n.odd? }.length

您可以使用 Hash#values 获取值数组。然后统计其中奇数个元素的个数:

res = {"a"=>3, "b"=>4, "c"=>3}
res.values.count(&:odd?)
#=> 2