簡體   English   中英

編寫一個程序,打印該字符串包含子字符串的次數

[英]Write a program that prints the number of times the string contains a substring

s = "bobobobobobsdfsdfbob"
count = 0 
for x in s : 
    if x == "bob" : 
       count += 1
print count

我想計算字符串s中的鮑勃數,如果結果是17,我的代碼是新手python,這是怎么回事。

當您循環顯示字符串時,throwaway變量將保留字符,因此在循環中x永遠不會等於bob

如果要計算非重疊字符串,則可以簡單地使用str.count

In [52]: s.count('bob')
Out[52]: 4

對於重疊的子字符串,可以在正則表達式中使用環顧四周:

In [57]: import re

In [59]: len(re.findall(r'(?=bob)', s))
Out[59]: 6

您可以使用string.count

例如:

s = "bobobobobobsdfsdfbob"
count = s.count("bob")
print(count)

我沒有提供最佳解決方案,只是嘗試更正您的代碼。

了解for each (aka range for)在您的情況下的作用

for c in "Hello":
    print c  

輸出:

H
e
l
l
o

在每次迭代中,您都將字符與字符串進行比較,這會導致錯誤的答案。
嘗試類似
(無重疊,即無跨度)

s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
i = 0
while i <= len(s) - len(w):
    if s[i:i+len(w)] == w:
        count += 1
        i += len(w)
    else:
        i += 1
print (count)

輸出:

Count = 4

重疊

s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
for i in range(len(s) - len(w) + 1):
    if s[i:i+len(w)] == w:
         count += 1
print (count)

輸出:
Count = 6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM