按照字符串的异位词分组:给定一个字符串数组,将所有异位词(字符相同但顺序不同的字符串)分组到同一个组中。
要按照字符串的异位词分组,可以使用哈希表来将每个字符串排序后作为键,相同键的字符串即为异位词。以下是实现这个算法的Python代码:
from collections import defaultdict
def group_anagrams(strs):
anagrams_map = defaultdict(list)
for s in strs:
# 将字符串排序后作为键,相同键的字符串即为异位词
sorted_s = ''.join(sorted(s))
anagrams_map[sorted_s].append(s)
return list(anagrams_map.values())
# 示例字符串数组
strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
# 分组异位词
grouped_anagrams = group_anagrams(strs)
print("Groups of anagrams:", grouped_anagrams)
在上面的代码中,我们使用defaultdict
创建了一个默认值为列表的哈希表anagrams_map
,然后遍历字符串数组strs
,对每个字符串进行排序,并将排序后的字符串作为键,原始字符串作为值,加入到哈希表中。最后返回哈希表中的值,即分组后的异位词列表。
这个算法的时间复杂度为O(n * k * logk),其中n是字符串数组的长度,k是字符串的平均长度,因为需要对每个字符串进行排序。
标签:anagrams,strs,异位,分组,字符串,排序 From: https://blog.csdn.net/SmiledrinkCat/article/details/136771390