我无法计算在
中出现的时间输入: a = abcdebcf,b = bc
所以输出应 count = 2,因为bc在a中出现2次。
def maxcount(a, b):
sum = 0
for t in s:
s = s.replace(t, '')
sum += 1
return sum
我的代码将b的每个字母与a中的每个字母进行比较。然后计算所有这些。我的代码的示例输出是:count = 4.它应该是2。
答案 0 :(得分:2)
使用正则表达式与re
模块匹配您的模式:
>>> import re
>>> a = 'abcdebcf'
>>> b = 'bc'
>>> re.findall('bc', a)
['bc', 'bc']
>>> len(re.findall('bc', a))
2
您可以像这样定义您的功能
def maxcount(a, b):
import re
return len(re.findall(b, a))
print maxcount('abcdebcf', 'bc')
2
更新:根据您的评论,您要查找的是递归函数。这看起来会有所不同,比如
import re
total = 0
a = 'xxyy'
b = 'xy'
while a:
b_in_a = len(re.findall(b, a))
if b_in_a < 1:
break
total += b_in_a
a = a.replace(b, '')
print total
2
答案 1 :(得分:0)
您的特定示例的另一个简单替代方法是使用count函数。在您的情况下,重叠没有问题。
a = "abcdebcf"
b = "bc"
count = a.count(b)
print(count)
编辑:
根据评论中提出的要求,我正在添加另一种方法来解决更换后发生的次数。检查此功能。它取代并保持计数直到找到实例。
import re
a = "xxyy"
b = "xy"
count = 0
while True:
a, c = re.subn(b, '', a)
count += c
if c == 0:
break
print(count)
答案 2 :(得分:0)
你可以试试这个:
sum = 0
c = ''
for letter in a:
c = c + letter
if b in c:
sum += 1
c = ''
return sum