每日一题20201214(49. 字母异位词分组)

49. 字母异位词分组

image-20201214112411400

排序

遍历数组,然后对字符串进行排序,如果是异或词,那他们排序后的值也是一样,利用这一点,通过维护一个默认存放空数组的字典将他们合并到一起。

# 通俗解法
class Solution:
   def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
       ans = {}
       for s in strs:
           key = "".join(sorted(s))
           if ans.get(key) is None:
               ans[key] = [s]
           else:
               ans[key].append(s)
       return list(ans.values())

# 优雅写法
import collections

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        ans = collections.defaultdict(list)
        for s in strs:
            key = "".join(sorted(s))
            ans[key].append(s)
        return list(ans.values())
 

image-20201214113138963

原文地址:https://www.cnblogs.com/we8fans/p/14132335.html