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

如何从字符串中提取连续重复次数≥2的子串?

获取字符串中连续重复子串的正确实现

现有代码存在逻辑缺陷:它仅遍历相邻字符,每次发现相同就将单个字符加入列表,无法识别完整的连续重复段。比如输入abbdccc时,原代码输出为['b', 'c', 'c'],和期望的['bb', 'ccc']不符。

以下是修正后的实现代码:

def get_consecutive_duplicates(s):
    if not s:
        return []
    result = []
    current_char = s[0]
    current_count = 1
    for char in s[1:]:
        if char == current_char:
            current_count += 1
        else:
            if current_count > 1:
                result.append(current_char * current_count)
            current_char = char
            current_count = 1
    # 处理最后一段连续重复的字符
    if current_count > 1:
        result.append(current_char * current_count)
    return result

# 测试示例
print(get_consecutive_duplicates('abbdccc'))  # 输出: ['bb', 'ccc']
print(get_consecutive_duplicates('34456788'))  # 输出: ['44', '88']

代码逻辑说明

  • 先处理空字符串的边界情况,直接返回空列表
  • 初始化当前跟踪的字符和连续计数,从字符串第二个字符开始遍历
  • 遇到相同字符时累加计数,遇到不同字符时,检查之前的连续计数是否大于1,是则生成完整重复子串加入结果,再重置跟踪的字符和计数
  • 遍历结束后,必须单独处理最后一段可能的连续重复字符,避免遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:18:20