Рубрики
Без рубрики

Group Anagrams Python Solution

Ссылка на проблему LeetCode здесь Проблема гласит: Учитывая множество строк Strs, группируйте анаграммы … Tagged с помощью Python, Datastructures, алгоритмов.

Ссылка на проблему LeetCode здесь

Проблема гласит: Учитывая множество строк Strs, группируйте анаграммы вместе. Вы можете вернуть ответ в любом порядке.

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

Начальные мысли

Первое, что мы должны подумать, это как сказать, является ли какое -либо данное слово анаграмма другого. Глядя на каждую букву одним словом может быть началом для нашего решения. Но просмотр каждой буквы и выяснение того, есть ли 2 слова одинаковые буквы, может занять слишком много времени.

Что если мы отсортируем каждую букву в словом алфавитно. Это может указать нам на слова, которые имеют одинаковые буквы и являются анаграммами.

Лучшим способом разобраться с словами был бы с каким -то методом. В Python вы можете просто сделать это на самом слове sordedword.join (сортирован (слово)) Другие языки могут быть не такими добрыми.

Теперь, когда мы можем организовать каждое слово для сортировки внутри себя, мы можем сгруппировать слова, которые сортируются, чтобы быть одинаковыми. Такие слова, как «Ешь, чай, съел», все будут отсортированы до одного и того же «AET».

Это не все наше решение, хотя проблема называется «Групповые анаграммы. “Как мы будем хранить все эти отдельные группы?

Ну, так как мы знаем слова «есть, ели» и «чай» – все они отсортируются по «aet». Что если мы сгруппируем их до этого сортированного слова в хэш -таблице или словаре. Словарь тогда выглядел бы как

table = {
    "aet": ["ate", "eat", "tea"]
}

Затем мы сможем проверить любое слово, если они являются анаграммами друг друга. Если, например, мы получаем другое слово, такое как «автомобиль». ".join (отсортирован (автомобиль)) => агре

что не то же самое, что «AET», поэтому не является анаграммой других слов.

Поскольку у нас есть новое слово, мы можем добавить его в нашу таблицу в качестве новой пары значений ключей

table = {
    "aet": ["ate", "eat", "tea"],
    "acr": ["car"]
}

Это общий шаблон, пока мы не пройдем через весь входной массив слов.

Проблема просит нас вернуть список анаграмм вместе в одном большом массиве. Затем мы можем вернуться с Список (table.values ()) В Python, который вернет все значения нашей таблицы в списке массивов с анаграммами.

def groupAnagrams(words):
    anagrams = {}
    for word in words:
        sortedWord = "".join(sorted(word))
        if sortedWord in anagrams:
            anagrams[sortedWord].append(word)
        else:
            anagrams[sortedWord] = [word]
    return list(anagrams.values())

Оригинал: “https://dev.to/jabermudez11/group-anagrams-python-solution-1482”