给一个字符串数组,将字母异位词组合在一起,以任意顺序返回结果列表,用python实现
时间: 2024-04-10 21:34:08 浏览: 112
python 实现字母异位词分组
可以使用哈希表来解决将字母异位词组合在一起的问题。具体的实现如下:
```python
def group_anagrams(strs):
if not strs:
return []
# 创建一个哈希表,用于存储异位词组合的结果
anagrams = {}
# 遍历每个字符串
for word in strs:
# 对字符串进行排序,使得相同的异位词排序后变成相同的字符串
sorted_word = ''.join(sorted(word))
# 如果排序后的字符串不在哈希表中,则将其加入哈希表,并以排序后的字符串作为键,创建一个新的列表作为值
if sorted_word not in anagrams:
anagrams[sorted_word] = [word]
else:
# 如果排序后的字符串已经在哈希表中,则将当前字符串加入到对应的列表中
anagrams[sorted_word].append(word)
# 将哈希表中的值转换为列表作为最终结果
result = list(anagrams.values())
return result
```
这里创建了一个哈希表 `anagrams` 来存储异位词组合的结果。遍历每个字符串,对字符串进行排序,使得相同的异位词排序后变成相同的字符串。然后判断排序后的字符串是否在哈希表中,如果不在,则将其加入哈希表,并以排序后的字符串作为键,创建一个新的列表作为值;如果已经在哈希表中,则将当前字符串加入到对应的列表中。最后将哈希表中的值转换为列表作为最终结果。
你可以调用 `group_anagrams` 函数并传入一个字符串数组来测试它的功能。例如:
```python
strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
result = group_anagrams(strs)
print(result) # 输出:[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]]
```
这里的字符串数组中有三组字母异位词:["eat", "tea", "ate"]、["tan", "nat"] 和 ["bat"]。它们被分组在一起并返回了一个列表。
阅读全文