2016-09-18 41 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 
相關問題