str = «aaabbccaaaaddbab»
вывод: {«a»=›8, «b»=›4, «c»=›2, «d»=›2}
Решение1:
str = "aaabbccaaaaddbab" => "aaabbccaaaaddbab" result = {} => {} str.chars.each do |data| result[data] = str.chars.count(data) end => ["a", "a", "a", "b", "b", "c", "c", "a", "a", "a", "a", "d", "d", "b", "a", "b"] result => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}
Решение2:
str.chars.tally => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}
Решение3:
result = str.each_char.group_by(&:itself).transform_values(&:count) => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}
Решение4:
str.chars.group_by(&:itself).map {|key, data| [key, data.count]}.to_h => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}
Решение5:
result = Hash.new(0) # here we intial the hash with value 0 str.chars.each {|data| result[data] += 1} => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}
Решение 6.
Hash[str.chars.group_by{|i| i }.map{|data, value| [data, value.size]}] => {"a"=>8, "b"=>4, "c"=>2, "d"=>2}