我想定义一个带有两个带有两个参数的字符串的函数。如果第一个字符串是第二个字符串的“子字谜”,我希望它返回 true。仅当第一个字符串中的每个字母在第二个字符串中出现的次数至少相同时,该函数才应返回 true。 例如。键是键盘的“子字谜”,但鼠标不是。
这是我到目前为止的代码:
# -*- coding: utf-8 -*-
def anagram(str1,str2):
# string to list
str1 = list(str1.lower())
str2 = list(str2.lower())
#sort list
str1.sort()
str2.sort()
#join list back to string
str1 = ''.join(str1)
str2 = ''.join(str2)
return str1 == str2
print(anagram('trainers', 'strainer'))
到目前为止,如果两个字符串都是精确的字谜词,它将返回 true,并且我不知道如何更改它。
谢谢
最佳答案
正如 @achampion 提到的,Counter
是解决此问题的最佳方法。检查字符串 a
是否包含构成字符串 b
的所有字符:
from collections import Counter
def contains_anagram(a, b):
a = Counter(a)
b = Counter(b)
return all(b[letter] <= a[letter] for letter in b)
关于具有两个字符串的 Python 函数 - 子字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40393859/