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
相关产品推荐
相关产品推荐

