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

