anagram 变位词题目一则
转载请注明出处:https://blog.csdn.net/jpch89/article/details/85063226
1. 题目
Given an array of strings, return an array of strings that groups all anagrams.
An anagram is a word that has the same letters, but in different positions.
i.e. given["cars", "thing", "scar", "dog", "god", "arcs", "the"]
return[["cars", "scar", "arcs"], ["thing"], ["dog", "god"], ["the"]]
2. 思路
对每个单词的所有字母进行排序,得到的值可以作为字典的键。
比如 scar 和 cars 得到的键是 acrs。
与键对应的值是一个列表,存储原单词。
返回这个字典的值组成的列表即可。
补充
还有一种判断两个词是否是同位词的方法是:转化成列表,然后remove。
3. 实现
def find_anagrams(words):
words_pair = zip(words, [str(sorted(w)) for w in words])
res_dict = {}
for i, j in words_pair:
res_dict.setdefault(j, [])
res_dict[j].append(i)
return list(res_dict.values())
words = ['cars', 'thing', 'scar', 'dog', 'god', 'arcs', 'the']
res = find_anagrams(words)
print(res)
"""
[['cars', 'scar', 'arcs'], ['thing'], ['dog', 'god'], ['the']]
"""
完成于 2018.12.18
本文介绍了一种解决变位词分组问题的算法。通过将字符串中的字符排序后作为字典键,实现对给定字符串数组中所有变位词的有效分组。同时探讨了另一种基于列表remove操作的变位词判断方法。
2053

被折叠的 条评论
为什么被折叠?



