字母异位词分组(力扣100

发布时间:2026/7/2 16:39:38

字母异位词分组(力扣100 1.使用哈希存一个字符串的模板信息即一个字符串出现的每个单词及其次数并将这个消息转为一个字符串以便于比较2.遍历strs若为同一个模板则加入class Solution(object):def hash_count(self,str):hash_map{}for i,value in enumerate(str):if value in hash_map.keys():hash_map[value]1else:hash_map[value]1return hash_mapdef hash_to_str(self,hash):l[]for v in hash.keys():l.append([ord(v),hash[v]])l.sort(keylambda x: x[0])str1for x in l:str1chr(x[0])str(x[1])return str1def groupAnagrams(self, strs)::type strs: List[str]:rtype: List[List[str]]hash_map{}answer[]for i,value in enumerate(strs):hash_iself.hash_count(value)str_iself.hash_to_str(hash_i)if str_i in hash_map:hash_map[str_i].append(value)else:hash_map[str_i][]hash_map[str_i].append(value)for v in hash_map.keys():answer.append(hash_map[v])return answer不熟的基本知识数字变字符串str()列表变字符串 .join(l)列表就地排序l.sort(keylambda x:x[0]) 其实不止是数字字母也是可以排序的所以ord和chr其实没有必要生成新列表new_lsorted(l,keylambda x: x[0]) 这个所有可迭代的都可以排序但是注意返回的是列表也就是说字符串排序是会返回列表的需要再join一下字母变数字 ord()数字变回字母 chr()更简单的写法字符串可以直接排序不需要手写一个字符串的模板信息没想到这个就是因为对于语法还不熟悉注意不可变的才能做字典的键列表不行元组可以更优的解法class Solution(object): def groupAnagrams(self, strs): :type strs: List[str] :rtype: List[List[str]] mpcollections.defaultdict(list) for st in strs: key.join(sorted(st)) mp[key].append(st) return list(mp.values())

相关新闻