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()]

评论

此博客中的热门博文

拜厄练习曲44, 45

拜厄练习曲38, 39