对哈希值的操作: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?}
您可以通过迭代 count
的 each_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
我的输入是:
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?}
您可以通过迭代 count
的 each_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