2016-09-18 19 views
-3

このプログラムは文字列に "bob"という文字列が出現する回数を出力しなければなりません。例:s = "azcbobobegegak"の場合、プログラムは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 
関連する問題