Group Anagram
An alternative, grouping a list of words into anagrams. Idea is similar to anagram, use sorted word as the key.
anagram_map = defaultdict(list)
for word in words:
sorted_word = "".join(sorted(word))
anagram_map[sorted_word].append(word)
return anagram_map.values()Alternatively, create a signature manually. e.g.
a = ord('a')
count = [0] * 26
for c in word:
count[ord(c) - a] += 1
result = []
for i, n in enumerate(count):
if n:
result.extend([chr(i + a), str(n)])
return "".join(result)Alternatively