LeetCode 49. Group Anagrams
Description
Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
Note:
All inputs will be in lowercase.
The order of your output does not matter.
描述
給定一組字符串,將由相同字母組成的字符串組合在一起如蚜。
注意:所有給定的輸入都是小寫影暴,輸出的順序不重要
思路
- 這道題思路很清晰探赫,也比較簡(jiǎn)單
- 對(duì)字符串排序,以排好序的字符串為鍵伦吠,構(gòu)建hash表,值為包含字符串的list
- 用python實(shí)現(xiàn)很容易毛仪,因?yàn)橛蓛?nèi)置函數(shù),如果改用C語言腺逛,會(huì)增加難度
class Solution:
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
res = []
strdict = {}
for item in strs:
# 對(duì)字符串進(jìn)行排序衡怀,sorted返回一個(gè)list,需要重新組裝成為一個(gè)字符串
key = ''.join(sorted(item))
# 如果排好序的字符串已經(jīng)存在抛杨,則將該字符串原來的形式插入對(duì)應(yīng)的list
if key in strdict.keys():
strdict[key].append(item)
else:
# 如果不存在,就先創(chuàng)建一個(gè)list茁帽,然后在插入
strdict[key] = []
strdict[key].append(item)
# 取出所有的結(jié)果屈嗤,放到一個(gè)list中
for key in strdict:
res.append(strdict[key])
# 返回所有的結(jié)果
return res
源代碼文件在這里
?本文首發(fā)于何睿的博客,歡迎轉(zhuǎn)載恢共,轉(zhuǎn)載需保留文章來源,作者信息和本聲明.