如果我有一个字符串str1=boobbobobpzfsbobboobbobb
,我想计算字符串'bob'
在其中的次数。但是,我不能使用str1.count
,因为它只计算非重叠字符串。那我该怎么办?
答案 0 :(得分:2)
使用regular expression(正向前瞻断言):
>>> import re
>>> str1 = 'boobbobobpzfsbobboobbobb'
>>> sum(1 for m in re.finditer('b(?=ob)', str1))
4
答案 1 :(得分:2)
你可以通过考虑从递增索引开始的所有子串并计算从"bob"
开始的子串来在二次时间(最差情况)中求解它:
str1 = "boobbobobpzfsbobboobbobb"
times = 0
for pos in range(len(str1)):
if str1[pos:].startswith("bob"):
times += 1
print(times)
或:
str1 = "boobbobobpzfsbobboobbobb"
times = sum(1 for x in range(len(str1)) if str1[x:].startswith("bob"))
print(times)
答案 2 :(得分:0)
import re
str1 = 'boobbobobpzfsbobboobbobb'
len(re.findall('b(?=ob)',str1))
答案 3 :(得分:0)
这是一个小单行:
str1 = "boobbobobpzfsbobboobbobb"
str2 = 'bob'
count = sum([str1[k:k+len(str2)]==str2 for k in range(0, len(str1)-len(str2)+1)])
# OUTPUT: 4