我正试图以最有效的方式解决这个问题。
查找给定字符串是否包含另一个较小字符串的字谜
我的方法是创建较小字符串(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
答案 0 :(得分:2)
如果您不关心实施细节,
from collections import Counter
def contains_anagram(s1, s2):
return len(list((Counter(s1) & Counter(s2)).elements())) == len(s2)