我需要查找字符串是否包含子字符串的所有字符。因此,對于 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

牛魔王的故事
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
添加回答
舉報
0/150
提交
取消