Problem Definition:
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
Solution:
要求把所有存在anagram的字符串放在一个数组,所有返回的结果看起来应该是这样:
['ems', 'mse', 'app', 'ppa'......]
用hasptable很容易实现。
1 # @param {string[]} strs 2 # @return {string[]} 3 def anagrams(strs): 4 if len(strs)<=1: 5 return [] 6 bigDix={} 7 for aStr in strs: 8 key=str(sorted(aStr)) 9 if key not in bigDix: 10 bigDix[key]=[aStr] 11 else: 12 bigDix[key]+=aStr, 13 res=[] 14 for arr in bigDix.values(): 15 if len(arr)>1: 16 res+=arr 17 return res 18
值得注意的是,Python中的dict是不能保证key的顺序的。而OrderedDict是按照插入顺序保存key-values的,它还可以用来生成利用某种规则排序的字典。