[Leet Code] 49. Group Anagrams

3169 ワード

提问链接


問題の説明


Given an array of strings strs, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.


Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

制限


1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] consists of lowercase English letters.

に答える


この問題は単語を一列に並べて、同じ単語かどうかを見て、グループに分けて出力すればいいです.
sorded()を使用して単語のレイアウトをソートし、sorded()をリスト形式で返すため、joinを使用して文字列とし、dickshernerのキーとして使用します.
Annegram関係の単語には同じキーがあります.
defaultdictをリストとして宣言し、dickシャナリーに単語を入れます.
ディクシャナリー値をリストに変換して返します.
test cases passedRuntimeMemory Usage115/115132ms17.7MB
from collections import defaultdict
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagrams = defaultdict(list)
        for i in strs:
            word = ''.join(sorted(i))
            anagrams[word].append(i)
        return list(anagrams.values())