🐙

NeetCode 150 [Arrays & Hashing]:medium 1/6

2025/02/27に公開

NeetCodeのSolutionを書いていく

Group Anagrams

問題概要

文字列のリストが与えられます。
アナグラムをサブリストにまとめて返しましょう。
リストの順番は問いません。

前提

  • 文字列は小文字。
  • 配列長は1~1000
  • 文字列長は0~100

Input: strs = ["act","pots","tops","cat","stop","hat"]
Output: [["hat"],["act", "cat"],["stop", "pots", "tops"]]

Input: strs = ["x"]
Output: [["x"]]

Input: strs = [""]
Output: [[""]]

メモ

文字列をソートしてハッシュのキーにすればできそう。
でもそれだとソートの時間がかかっちゃうかな。

とりあえずいけた。
回答もこんな感じではあった。

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        result: Dict = {}
        for str in strs:
            sorted_str = "".join(sorted(str))
            if sorted_str not in result:
                result[sorted_str] = [str]
            else:
                result[sorted_str].append(str)
        return list(result.values())

Discussion