Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
如果两个单词所包含的字符和数量都是一样的,只是顺序不同,那么就为anagrams~如果是判断两个单词是否为anagrams,有两种解法:一种是用第一个词建立hashmap,key为其中的字符,value为该字符出现的次数;然后把另一个词中出现的字符逐个在hashmap中去掉,如果最后hashmap为空,就返回True;另一种解法是将两个词排序,然后判断排序之后的两个单词是否相等~
这个题是给你一些字符串,要求按anagrams分类~可以构建一个hashmap,然后对每一个字符串排序,把排序后的字符串作为key存到hashmap中,value是所有排序后等于这个key的原字符串
class Solution:
# @param strs, a list of strings
# @return a list of strings
def anagrams(self, strs):
if strs is None or len(strs) == 0: return[]
res = []; dict = collections.defaultdict(list)
for string in strs:
dict[''.join(sorted(string))].append(string)
for key in dict:
if len(dict[key]) > 1:
res += dict[key]
return res