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

Python中如何统计字符串中重叠重复子串的出现次数?

统计重叠子串出现次数

Python自带的str.count()方法默认不会统计重叠的匹配项,比如你用"abbbbbbc".count("bbb")得到2,是因为它只找不重叠的匹配(位置0-2和3-5)。要统计所有重叠的匹配,你可以自己实现一个函数:

def count_overlapping(s, sub):
    count = 0
    sub_length = len(sub)
    s_length = len(s)
    # 遍历所有可能的起始索引,确保子串能完整取到
    for i in range(s_length - sub_length + 1):
        if s[i:i+sub_length] == sub:
            count += 1
    return count

# 测试示例
print(count_overlapping("abbbbbbc", "bbb"))  # 输出4

工作原理:

  • 先计算原字符串和目标子串的长度,确定遍历的边界:起始索引最大为原字符串长度 - 子串长度,这样最后一个索引对应的子串刚好能覆盖到原字符串的末尾。
  • 逐个检查每个起始位置开始的子串是否和目标子串匹配,每匹配一次就把计数加1。

这个方法逻辑清晰,能处理各种重叠匹配的场景,不管子串长度是多少都适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:31:10