Leetcode 49. 字母异位词分组
一、题目描述
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
提示:
- 1 <= strs.length <= 10^4
- 0 <= strs[i].length <= 100
- strs[i] 仅包含小写字母
二、我的想法
- 最开始想的是将数组中的字符串排序放在 list 中,如果排序后的字符串在 list 中,就 append 进对应的字典数组里。
- 后来发现不用新弄个列表也行,直接用字典就可以了。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
# setStrs = list()
newDict = defaultdict(list)
for s in strs:
tmplist = list(s)
tmplist.sort()
c = "".join(tmplist)
# if c not in newDict:
# setStrs.append(c)
newDict[c].append(s)
return (list(newDict.values()))
三、其他人的题解
看了下 灵茶山艾府 的题解 哈希表分组,简洁写法(Python/Java/C++/Go/JS/Rust),感觉想法差不多,但是写的要比我的简洁。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d = defaultdict(list)
for s in strs:
d[''.join(sorted(s))].append(s) # sorted(s) 相同的字符串分到同一组
return list(d.values())
原文地址:https://blog.csdn.net/li_yizhixiaowukong/article/details/140613945
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!