# Group Anagrams
#
# Дан массив строк strs. Сгруппируй анаграммы вместе.
# Анаграмма — слово, полученное перестановкой букв другого слова
# (например, "eat", "tea", "ate" — анаграммы).
#
# Напиши функцию group_anagrams(strs), которая возвращает массив групп.
# Порядок групп и порядок строк внутри группы — любой.
#
# Примеры:
#   group_anagrams(["eat","tea","tan","ate","nat","bat"])
#     →  [["bat"],["nat","tan"],["ate","eat","tea"]]   (порядок любой)
#   group_anagrams([""])   →  [[""]]
#   group_anagrams(["a"])  →  [["a"]]
#
# Ограничения:
#   1 <= strs.length <= 10^4
#   0 <= strs[i].length <= 100
#   strs[i] состоит только из строчных английских букв (a-z)


def group_anagrams(strs)
  repo = Hash.new

  strs.each do |str|
    repo[key(str)] ||= []
    repo[key(str)] << str
  end

  repo.values
end

def key(str)
  str.chars.sort.join
end

def key2(str)
  h = {}

  str.chars.each do |char|
    h[char] ||= 0
    h[char] += 1
  end

  h
end
