Exercism: Anagram (Python)
在一组词中查找变位词。想了两个方法1)是中规中矩变小写,排序对比,2)是生成全部的排列组合存在set里,然后用一个循环直接来查。写了第一种,比较简单。
def find_anagrams(word, candidates):
results = []
convert_word = lambda x: "".join(sorted(x.lower()))
sorted_word = convert_word(word)
for c in candidates:
if len(c) != len(word):
continue
if sorted_word == convert_word(c) and word.lower() != c.lower():
results.append(c)
return results
看了几个别人的答案,大同小异。有些用列表解析写成一行。但是感觉有点难读,而且加上一个长度的check, 性能会更好些。
return [w for w in candidates if word_sorted == sorted(w.lower()) and not w.lower() == word.lower()]
评论
发表评论