[leetcode] 49。グループアナグラム@python



49 Group Anagrams Python



元の質問

文字列の配列を指定して、アナグラムをグループ化します。

例:



入力:[「食べる」、「お茶」、「日焼け」、「食べた」、「nat」、「bat」]、
出力:
[
[「食べた」、「食べる」、「お茶」]、
['Nat'、 'tan']、
['1']
]
注意:

すべての入力は小文字になります。
出力の順序は重要ではありません。



解決

defaultdictを作成し、リストを値として使用し、単語を並べ替えて、キーとしてタプルに変換します
時間:O(n)
スペース:O(1)

コード

class Solution(object): def groupAnagrams(self, strs): ''' :type strs: List[str] :rtype: List[List[str]] ''' d = collections.defaultdict(list) for s in strs: tup = tuple(sorted(s)) d[tup].append(s) return [d[k] for k in d]