原題
給出一個字符串數(shù)組S沪哺,找到其中所有的亂序字符串(Anagram)。如果一個字符串是亂序字符串酌儒,那么他存在一個字母集合相同辜妓,但順序不同的字符串也在S中。
對于字符串數(shù)組 ["eat", "tea", "tan", "ate", "nat", "bat"]
返回
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
解題思路
- 首先,注意返回結(jié)果中籍滴,子字符串數(shù)組內(nèi)要保持有序酪夷,所以第一步先把strs排序
- 本題考察使用hashtable,與直接判斷兩個字符串是否是anagram不同孽惰,遍歷一遍字符串數(shù)組晚岭,將排序的字符串作為key,把原始字符串作為value
- 最后遍歷hashtable生成結(jié)果
完整代碼
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
strs.sort()
d = {}
for str in strs:
if "".join(sorted(str)) not in d:
d["".join(sorted(str))] = [str]
else:
d["".join(sorted(str))].append(str)
res = []
for key, value in d.items():
res.append(value)
return res