Python-比较字符串并计算显示时间
我无法计算b在a中出现了多少次 输入:a=abcdebcf,b=bc 因此,输出应为count=2,因为bc在a中出现2次Python-比较字符串并计算显示时间,python,Python,我无法计算b在a中出现了多少次 输入: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。使用
def maxcount(a, b):
sum = 0
for t in s:
s = s.replace(t, '')
sum += 1
return sum
我的代码将b中的每个字母与a中的每个字母进行比较。然后数一数。我的代码的示例输出是:count=4。它应该是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
重新导入
总数=0
a='xxyy'
b='xy'
而a:
b_in_a=len(关于findall(b,a))
如果b_in_a<1:
打破
总计+=b_in_a
a=a。替换(b,“”)
打印总数
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
重新导入
总数=0
a='xxyy'
b='xy'
而a:
b_in_a=len(关于findall(b,a))
如果b_in_a<1:
打破
总计+=b_in_a
a=a。替换(b,“”)
打印总数
2.
对于您的特定示例,另一个简单的替代方法是使用函数。在您的情况下,重叠没有问题
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)
对于您的特定示例,另一个简单的替代方法是使用函数。在您的情况下,重叠没有问题
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)
您可以尝试以下方法:
sum = 0
c = ''
for letter in a:
c = c + letter
if b in c:
sum += 1
c = ''
return sum
您可以尝试以下方法:
sum = 0
c = ''
for letter in a:
c = c + letter
if b in c:
sum += 1
c = ''
return sum
所以,如果我们计算bc,然后把它从a字符串中去掉,如果在我们去掉后,新字符串创建了一个新的bc。。那么我们如何将其计入maxcount?我不确定我是否理解,您想创建一个新字符串而不出现
bc
事件?向函数传递字符串(param a
)和要匹配的模式(param b
)输入:a=xxyy,b=xy。然后我们从xxyy计数1中取xy。。然后它创建一个新字符串xy。。然后我们还有1个xy,所以我们需要将新的xy计算到MaxCount中。这将返回1,因为xy
在字符串中显示1。尝试函数xxyy我们数1,然后取下该xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算总数,所以总数应该是2so,如果我们计算bc,那么把它从a字符串中去掉,如果在我们去掉之后,新字符串创建了一个新的bc。。那么我们如何将其计入maxcount?我不确定我是否理解,您想创建一个新字符串而不出现bc
事件?向函数传递字符串(param a
)和要匹配的模式(param b
)输入:a=xxyy,b=xy。然后我们从xxyy计数1中取xy。。然后它创建一个新字符串xy。。然后我们还有1个xy,所以我们需要将新的xy计算到MaxCount中。这将返回1,因为xy
在字符串中显示1。尝试函数xxyy我们数1,然后取下该xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算总数,所以总数应该是2tank,但是这个怎么样:如果a=xxyy,b=xy,那么我们计算1,然后我们去掉这个xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算xy,所以总数应该是2。怎么做?检查答案。我已经按照你的要求编辑了我的答案。希望对您有所帮助。:)我要找的是该程序可以为任何字符串工作!谢谢,但是这样如何:如果a=xxyy,b=xy,那么我们计算1,然后我们去掉这个xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算xy,所以总数应该是2。怎么做?检查答案。我已经按照你的要求编辑了我的答案。希望对您有所帮助。:)我要找的是该程序可以为任何字符串工作!