Python - 比较字符串并计算出现的时间

时间:2017-10-05 20:13:51

标签: python

我无法计算在

中出现的时间

输入: 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。

3 个答案:

答案 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