在另一个

时间:2016-02-12 05:42:00

标签: python

我正试图以最有效的方式解决这个问题。

查找给定字符串是否包含另一个较小字符串的字谜

我的方法是创建较小字符串(s2)的哈希表/字典以及该字符串的出现次数。 迭代给定的字符串(s1)并查看是否找到了哈希表中的所有字符。

现在我的代码的运行时是O(3N),带有O(N)额外空间。我想知道是否有更好的方法来解决这个问题。

def contains_anagram(s1, s2):
    characters = {}
    for i in s2:
        if i in characters:
            characters[i] += 1
        else:
            characters[i] = 1
    for i in s1:
        if i in characters:
            characters[i] -= 1
        else:
            continue
    for i in characters:
        if characters[i] > 0:
            return False
    return True

1 个答案:

答案 0 :(得分:2)

如果您不关心实施细节,

from collections import Counter

def contains_anagram(s1, s2):
    return len(list((Counter(s1) & Counter(s2)).elements())) == len(s2)