Python 在另一个字符串中查找一个字符串的字谜

Python 在另一个字符串中查找一个字符串的字谜,python,Python,我正试图以最有效的方式解决这个问题 查找给定字符串是否包含另一个较小字符串的字谜 我的方法是创建一个小字符串(s2)和该字符串出现次数的哈希表/字典。 遍历给定的字符串(s1),查看是否找到了哈希表中的所有字符 现在我的代码的运行时是O(3N),有O(N)个额外的空间。我想知道是否有更好的方法来解决这个问题 def contains_anagram(s1, s2): characters = {} for i in s2: if i in characters:

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

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

我的方法是创建一个小字符串(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

如果您不关心实施细节

from collections import Counter

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

如果您不关心实施细节

from collections import Counter

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