You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计字符串中'bob'出现次数的循环计数错误求解

问题描述

需求为编写程序,统计并打印字符串s中目标子串'bob'的出现次数。原有代码存在逻辑错误:只要字符串中存在'bob',遍历过程中会计数多次,结果不符合预期。
原有错误代码如下:

numOfBobs = 0
for word in s:
    if 'bob' in s:
        numOfBobs += 1
print(numOfBobs)
错误原因分析
  • 循环逻辑错误:for word in s是逐字符遍历字符串,并非遍历可能的子串
  • 判断条件错误:'bob' in s是判断整个字符串是否包含'bob',只要存在一次匹配,每次循环都会触发计数累加,最终结果等于字符串长度(只要串内存在bob),和实际出现次数无关
  • 不需要使用嵌套循环,固定长度子串统计用滑动窗口切片的方式实现更简洁高效
正确实现代码
numOfBobs = 0
# 遍历所有长度为3的子串的起始索引,避免索引越界
for i in range(len(s) - 2):
    if s[i:i+3] == 'bob':
        numOfBobs += 1
print(numOfBobs)
实现说明
  • 目标子串长度固定为3,因此起始索引最大可取到len(s)-3,对应range(len(s)-2)的遍历范围
  • 每次通过切片取当前索引开始的连续3个字符和目标串比对,匹配成功才累加计数
  • 该写法可以正确统计重叠出现的'bob',例如s = 'bobob'时,位置0和位置2各匹配一次,最终输出结果为2,符合计数预期

内容的提问来源于stack exchange,提问作者Afonso Britto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:24:24