# coding=utf-8
# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
dict_alphab = dict(a=2, b=3, c=5, d=7, e=11, f=13, g=17, h=19, i=23, j=29, k=31, l=37, m=41, n=43, o=47, p=53, q=59, r=61, s=67, t=71, u=73, v=79, w=83, x=89, y=97, z=101)
dict_q = {}
for n in strs:
if n=="":
q=103
else:
q = 1
for i in n:
q = q*dict_alphab[i]
if dict_q.has_key(q):
dict_q[q].append(n)
else:
dict_q[q]=[n]
return dict_q.values()
思路就是让每一个字母异位词相同的value,还有一种超级厉害的写法,第一种解法就是用质数的积进行hash
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
dict_anagrams = dict()
for item in strs:
dict_anagrams.setdefault(''.join(sorted(item)), []).append(item)
return list(dict_anagrams.values())