Написано: 17.03.2023

49. Группировка анаграмм (Group Anagrams)

medium

Задание.

Получен массив строк strs.

Cгруппируйте анаграммы вместе. Ответ можно вернуть в любом порядке.

Анаграмма – это слово или фраза, образованные путем перестановки букв другого слова или фразы, обычно используя все исходные буквы ровно один раз.

Пример 1.

Входные данные: strs = [“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]

Результат: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]

Пример 2.

Входные данные: strs = [””]

Результат: [[””]]

Пример 3.

Входные данные: strs = [“a”]

Результат: [[“a”]]

Решение.

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> mp;
        for (string s : strs) {
            string t = s; 
            sort(t.begin(), t.end());
            mp[t].push_back(s);
        }
        vector<vector<string>> anagrams;
        for (auto p : mp) { 
            anagrams.push_back(p.second);
        }
        return anagrams;
    }
};

Способ решения.