比较两种Anagram方法

时间:2018-07-24 20:03:31

标签: python anagram

我有一个简单的Anagram问题,其中将给我一个单词和另一个单词列表。在该单词列表中,我必须找出其中的哪个单词是第一个单词的字谜。

所以我检查了互联网,并提出了以下两种解决方案:

解决方案1:

from collections import counter
def checkAnagram(word,words):
    anagrams = []
    for w in words:
        if len(w) != len(word):
            return False
        elif w == word:
            return False
        else:
            if counter(word) == counter(w):
                anagrams.append(word)
            else:
                return False
return anagrams

解决方案2:

def anagramSolution4(s1,s2):
    c1 = [0]*26
    c2 = [0]*26

    for i in range(len(s1)):
        pos = ord(s1[i])-ord('a')
        c1[pos] = c1[pos] + 1

    for i in range(len(s2)):
        pos = ord(s2[i])-ord('a')
        c2[pos] = c2[pos] + 1

    j = 0
    stillOK = True
    while j<26 and stillOK:
        if c1[j]!=c2[j]:
            return False

def checkAnagram(word,words):
    anagrams = []
    for w in words:
        if anagramSolution4(word,w):
            anagrams.append(w)
    return anagrams

我的问题似乎都在使用O(nm)复杂度吧?所以这里n是输入单词的大小,m是单词的最大大小。

如果有更好的解决方案,使用的复杂度更低,有人可以指点我吗。

谢谢。

0 个答案:

没有答案