我需要确定一个字符串是否具有子字符串的所有字符。因此,对于7个字符的字符串,我想知道字符串中是否包含5个字符的字符,而不重复字母(如果子字符串具有2个字母,那么该字符串最多需要2个字母)。
例如:
Substring = 'aabfy'
String1 = 'aabcfgy'
String2 = 'abcfgmy'
String3 = 'aaabcfy'
然后,String1和String3为True,但是String2为False。因为子字符串在1和3中,但不在2中(双精度a,但也可以是任何其他字母)。
我希望自己能解释自己的问题,我可以而且会回答。
答案 0 :(得分:1)
或者在列表理解中使用str.count
,并使用all
:
def f(s):
return all(s.count(i)>=Substring.count(i) for i in Substring)
print(f(String1))
print(f(String2))
print(f(String3))
输出:
True
False
True
答案 1 :(得分:0)
您可以通过以下方式使用collections.Counter
:
from collections import Counter
def contains_all(string, substring):
c1, c2 = Counter(string), Counter(substring)
return all(c1[x] >= c2[x] for x in c2)
这将确保子字符串中的每个字符在包含的字符串中至少存在相同的次数。
>>> contains_all('aaabcfy', 'aabfy')
True
>>> contains_all('abcfgmy', 'aabfy')
False
>>> contains_all('aabcfgy', 'aabfy')
True