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

求助:排查统计字符串中子串出现次数的Python代码问题

子字符串统计问题的代码修复与优化

原代码的问题分析

你的代码存在两个核心问题,导致统计结果不准确:

  • 未重置匹配缓存:stock列表没有在每次外层循环(遍历起始位置)开始时清空,之前循环残留的字符会干扰后续匹配判断。
  • 匹配逻辑冗余且错误:只要单个字符匹配就添加到stock,但没有处理"部分匹配后中断"的情况,即使中间字符不匹配,仍会继续检查后续字符,且用stock和子串比对的方式不够直接。

修复后的代码(保留原思路)

count = 0
phrase = "abcdacdeabcf"
sub = "abc"
len_phrase = len(phrase)
len_sub = len(sub)

# 遍历所有可能的子串起始位置
for j in range(len_phrase - len_sub + 1):
    is_match = True
    # 逐个字符比对当前子串
    for i in range(len_sub):
        if phrase[j + i] != sub[i]:
            is_match = False
            break  # 不匹配直接跳出,无需继续检查
    if is_match:
        count += 1

print(count)  # 输出:2

更简洁的Python内置实现

Python字符串自带count()方法,可以直接完成不重叠子串的统计,代码更高效简洁:

phrase = "abcdacdeabcf"
sub = "abc"
print(phrase.count(sub))  # 输出:2

内容的提问来源于stack exchange,提问作者Alice S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:43:11