为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查字符串是否包含子字符串的所有字符?

如何检查字符串是否包含子字符串的所有字符?

守候你守候我 2021-10-10 14:33:23
我需要查找字符串是否包含子字符串的所有字符。因此,对于 7 个字符的字符串,我想知道 5 个字符的子字符串的字符是否在字符串中,没有重复字母(如果子字符串有 2 个字母 a,则该字符串最多需要 2 个字母 a)。举个例子 :Substring = 'aabfy'String1 = 'aabcfgy'String2 = 'abcfgmy' String3 = 'aaabcfy'那么 String1 和 String3 为 True,而 String2 为 False。因为子字符串在 1 和 3 中而不在 2 中(双 a,但它也可以是任何其他字母)。我希望我能解释自己,任何问题我都可以并且会回答。
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

或者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


查看完整回答
反对 回复 2021-10-10
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以通过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


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号