【Leetcode】python - [49] Group Anagrams 個人解法筆記

題目出處

49. Group Anagrams

難度

medium

個人範例程式碼

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        str_dict = {}

        for each_str in strs:
            sorted_each_str = self.sort_alphabetical(each_str)
            if sorted_each_str not in str_dict:
                str_dict[sorted_each_str] = []        
            str_dict[sorted_each_str].append(each_str)

        ans = []
        for key, value in str_dict.items():
            ans.append(value)

        return ans

    def sort_alphabetical(self, s):
        return "".join(sorted(s))

最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解

  • 另外,最後那段後來發現可以優化為一行表示,不用自己重跑一次 dict,使程式碼更為簡潔:
return list(str_dict.values())

算法說明

其實就是一個整理 set 的題目,原本想要直接用 set() 作為 key,
後來發現 key 不能使用 set 可惜了XD

變通一下,把 key 換成「排序後的字串」,就能夠發揮類似的效果了,
我們要的就是個統一的標準。

input handling

x

Boundary conditions

for 控制範圍

Reference