題目大意
將字符組成相同的字符串分成一類
input
["eat", "tea", "tan", "ate", "nat", "bat"]
output
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
Solution
由於python中tuple類型可以直接作為map的key,因此可以直接將需要哈希的字符串或者數組放入一個list,隨后轉成tuple,即可實現hashmap的功能。
此題只需將統計每個字母出現次數的桶哈希,最后在同一個哈希集合中的元素即為題意中的同一類字符。
from collections import defaultdict
from typing import List
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
mp = defaultdict(list)
for str in strs:
cnt = [0]*26
for ch in str:
cnt[ord(ch) - ord('a')] += 1
mp[tuple(cnt)].append(str)
return list(mp.values())
s = Solution()
print(s.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))