2016-09-18 46 views
-3

该程序应该打印字符串“bob”出现在字符串中的次数,例如:if s =“azcbobobegghakl”,那么程序应该打印2.它在某些情况下有效,但在其他情况下它不会计数正确。什么似乎是问题?我应该如何改进我的Python代码?

numbob = 0 
i = 0 
if len(s) > 2: 
    for letter in s: 
     if letter == "b": 
      if len(s) < 3: 
       break 
      i = s.index(letter) 
      s = s[i: ] 
      if s[0] == "b" and s[1] == "o" and s[2] == "b": 
       numbob += 1 
       s = s[2: ] 
      else: 
       s = s[i+1: ] 
print(numbob) 
+0

@RvdK NOP。 “它在某些情况下有效,但有时不能正确计数”。只有工作代码属于那里。 –

回答

0

您可以使用re.findall()像这样:

import re 
>>> len(re.findall("(?=bob)", "azcbobobegghakl")) 
2 
+0

@AshwiniChaudhary注意到它,使用带前瞻断言的're.findall()'。可能是最快的。 – Bharel

0

也许这样的事情(虽然不是很有效):

def fn(s): 
    cnt = 0 
    n = len(s) 
    for i in range(0, n): 
     if s[i:i+3] == "bob": 
      cnt += 1 
    return cnt 
相关问题