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

Python删除字符串连续超n次重复字符及自定义函数错误排查

原有代码的问题
  • 遍历索引逻辑错误:外层for循环的range(len(string))是函数初始化时计算的固定值,后续你不断拼接修改string缩短其长度,但i仍然按照初始长度递增,会出现索引越界、跳过未处理字符的问题。
  • 核心删除逻辑错误:只要检测到i位置字符和后续n个位置内的字符相等,就直接删除i位置字符,哪怕该字符属于应该保留的连续范围内(比如n=2时前两个a符合要求,但你的逻辑会误删第一个a,导致最终a的数量不符合预期)。
  • 边界判断逻辑错误:i + j < len(string)-(n-1)的判断和需求完全不匹配,你需要统计的是单个字符连续出现的总次数,不是判断i后n位是否与i位字符相同。
简便实现方法

一次遍历即可完成需求,维护当前字符、连续计数两个变量,遇到相同字符计数加1,仅在计数不超过n的时候保留字符,遇到不同字符重置计数即可,实现代码如下:

def strcut(string, n):
    # 边界情况处理
    if not string or n <= 0:
        print("")
        return
    res = []
    current_char = string[0]
    consecutive_cnt = 1
    res.append(current_char)
    for char in string[1:]:
        if char == current_char:
            consecutive_cnt += 1
            if consecutive_cnt <= n:
                res.append(char)
        else:
            current_char = char
            consecutive_cnt = 1
            res.append(char)
    print(''.join(res))

测试验证:
输入strcut('aaabccdddd', 2) 输出为aabccdd,和预期一致;n=1输出abcd、n=3输出aaabccddd均符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:06