49. 字母异位词分组(中)

题目

  • 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
    字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

题解:字典

  • 首先,循环遍历每一个单词,通过排序建立字典的键。其次,将单词加入字典中:分两种情况,如果没有键在字典中,那么新添加一个列表;如果键在字典中,那么在字典中的该键下加入。最后,返回的是list(字典的值)
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        table = {}#创建一个空字典,strs = ["eat", "tea"]
        for s in strs:#遍历字符串列表 strs
            s_ = "".join(sorted(s))#对当前字符串 s=eat进行排序赋值给s_=aet
            if s_ not in table:#s_ 不在字典 table 中,
                table[s_] = [s]#所以将 s_ 作为键,将 [s] 作为对应的值存入字典 table={'aet': ['eat']}
            else:#当遍历到第二个字符tea时,排序后s_=aet已经在字典 table 中存在
                table[s_].append(s)#将当前字符串 s 追加到对应的值列表中,table = {'aet': ['eat', 'tea']}
        return list(table.values())#遍历完所有的字符串后,返回字典 table 中的值
posted @ 2024-03-01 21:04  Frommoon  阅读(2)  评论(0编辑  收藏  举报