<LeetCode-python3>字謎分組

給定一個(gè)字符串?dāng)?shù)組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。

示例:

輸入:["eat", "tea", "tan", "ate", "nat", "bat"],

輸出:[  ["ate","eat","tea"],  ["nat","tan"],  ["bat"]]

說(shuō)明:

所有輸入均為小寫(xiě)字母。

不考慮答案輸出的順序。

解題思路:
遇到分類(lèi)為題,首先要想到python的字典,字典的鍵可以作為類(lèi)別,值就是該類(lèi)別下的數(shù)據(jù)了。這道題可以用排序后的字符串作為鍵,而不同的字母異位詞就是值了。另外,在python字典中,可以之間使用 字典名[新的鍵]=新的值來(lái)添加一個(gè)新的鍵值對(duì)。但是不可以直接訪(fǎng)問(wèn)一個(gè)沒(méi)有鍵名的值,會(huì)拋出異常。在本題中,我們遍歷原始數(shù)組并添加到字典時(shí),會(huì)遇到直接訪(fǎng)問(wèn)值的情況,這里可以用到collections庫(kù)中的defaultdict類(lèi)型,它需要一個(gè)默認(rèn)參數(shù),當(dāng)遇到?jīng)]有鍵名的情況下可以自動(dòng)生成并賦予該默認(rèn)值。具體可以參考下面的代碼理解。
代碼如下:

def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        dic = collections.defaultdict(list)

        for i in strs:
            dic[''.join(sorted(i))].append(i)   
                #此時(shí)直接訪(fǎng)問(wèn)了字典的值,如果字典沒(méi)有對(duì)應(yīng)的鍵會(huì)拋出異常,所以要使用defaultdict
        return list(dic.values())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。