[leetcode 49] Group Anagrams


Group Anagrams

マイロジック


まず提出しませんでした.1時間の時間で解決しようとしたが解決できなかった
配列から1文字ずつ取り出し、その文字が作成できる順序で並べ替えます.
joined_word = ''.join(permutated_word)
文字が入力文字配列に存在する場合は、その文字列を新しいリストにリストし、入力文字配列から削除します.
いずれにしても、配列要素は重複文から削除され、次の重複文に使用されます.
インデックスの問題かもしれませんが、最後の要素は出力できない現象があります.
結局解決できず、1時間ほど経ってからやっと答えが見えた.

答えのロジック


答えは簡単すぎる.
Annegramは単語に属する文字の組み合わせです.
この語を並べ替えて、必ず1つの語に収束します.
ディクシャナを用いて,ある単語に収束した単語を配列に格納する.
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        
        import collections
        
        anagram = collections.defaultdict(list)
        
        for word in strs:
            anagram[''.join(sorted(word))].append(word)
            
        return list(anagram.values())