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

Python实现连续相同字母替换为单字符的代码纠错求助

需求说明

实现字符串连续重复字符去重功能:将字符串中连续出现的相同字母序列替换为单个对应字母,非连续位置的相同字母不受影响。

  • 测试输入:aaaabbcddefff
  • 预期输出:abcdef
原有代码问题

你写的代码存在几个核心问题,导致末尾片段处理结果异常:

  • Python依赖缩进区分代码块,原有代码循环层级缩进完全混乱,无法按预期逻辑执行
  • 用str.replace(l, "", count)做字符串截断是错误的:replace会从字符串全局匹配替换,不是仅替换开头连续的重复字符,会误删字符串其他位置的同名字符
  • 嵌套双层for循环做计数的逻辑冗余,且循环终止条件没有覆盖字符串末尾的最后一组连续字符,走到末尾时不会触发字符追加逻辑,导致末尾字符丢失
可运行修正代码

最简洁的实现逻辑是:遍历字符串时,仅当当前字符和结果串的最后一个字符不一致时,才把当前字符追加到结果中,天然跳过所有连续重复字符:

text = "aaaabbcddefff"
new_string = ""

for char in text:
    # 结果串为空时直接加第一个字符,后续只追加和上一个字符不同的内容
    if not new_string or char != new_string[-1]:
        new_string += char

print(new_string)

运行后输出为abcdef,符合预期。

如果你希望保留原代码里while循环截断原字符串的写法,可以参考下面的修正版本,从字符串头部逐段切掉连续重复字符:

text = "aaaabbcddefff"
new_string = ""

while text:
    current = text[0]
    new_string += current
    # 定位当前连续相同字符的结束位置
    idx = 0
    while idx < len(text) and text[idx] == current:
        idx += 1
    # 切掉前面所有连续重复的当前字符
    text = text[idx:]

print(new_string)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:06:24