Python 如何计算另一个字符串中的重叠字符串?

Python 如何计算另一个字符串中的重叠字符串?,python,string,Python,String,如果我有一个字符串str1=boobbobobebpzfsbobbobobobobobobb,我想计算该字符串“bob”出现在其中的次数。但是,我不能使用str1.count,因为它只计算非重叠字符串。那么我该怎么做呢?使用(正向前瞻断言): 使用(正向前瞻断言): 通过考虑从递增索引开始的所有子字符串,并计算有多少子字符串以“”bob””开始,可以在二次时间(最坏情况)内解决该问题: 或: 通过考虑从递增索引开始的所有子字符串,并计算有多少子字符串以“”bob””开始,可以在二次时间(最坏情况

如果我有一个字符串str1=boobbobobebpzfsbobbobobobobobobb,我想计算该字符串
“bob”
出现在其中的次数。但是,我不能使用str1.count,因为它只计算非重叠字符串。那么我该怎么做呢?

使用(正向前瞻断言):

使用(正向前瞻断言):


通过考虑从递增索引开始的所有子字符串,并计算有多少子字符串以“
”bob”
”开始,可以在二次时间(最坏情况)内解决该问题:

或:


通过考虑从递增索引开始的所有子字符串,并计算有多少子字符串以“
”bob”
”开始,可以在二次时间(最坏情况)内解决该问题:

或:


这里有一个小笑话:

str1 = "boobbobobpzfsbobboobbobb"
str2 = 'bob'

count = sum([str1[k:k+len(str2)]==str2 for k in range(0, len(str1)-len(str2)+1)])

# OUTPUT: 4

这里有一个小笑话:

str1 = "boobbobobpzfsbobboobbobb"
str2 = 'bob'

count = sum([str1[k:k+len(str2)]==str2 for k in range(0, len(str1)-len(str2)+1)])

# OUTPUT: 4
str1  = "boobbobobpzfsbobboobbobb"

times = sum(1 for x in range(len(str1)) if str1[x:].startswith("bob"))

print(times)
import re

str1 = 'boobbobobpzfsbobboobbobb'

len(re.findall('b(?=ob)',str1)) 
str1 = "boobbobobpzfsbobboobbobb"
str2 = 'bob'

count = sum([str1[k:k+len(str2)]==str2 for k in range(0, len(str1)-len(str2)+1)])

# OUTPUT: 4