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

Python字符串连续重复字符统计代码遗漏末尾字符及次数的问题排查

解决连续重复字符统计遗漏最后一组的问题

嘿,我马上帮你找出代码里的问题~

你遇到的核心问题是:循环结束后没有处理最后一组连续重复的字符。

你的循环是range(len(n)-1),这意味着i只会遍历到字符串的倒数第二个字符(索引为len(n)-2)。在循环逻辑里,只有当当前字符和下一个字符不相等时,才会把当前字符和累计次数存入d和a。但最后一组连续字符(也就是示例里的最后3个U)没有触发这个else分支——因为循环结束时,这组字符的匹配还在持续,没有机会把它们的信息追加到结果里。

最简单的修复方式:循环结束后手动补充最后一组

只需要在循环外面加上两行代码,把最后一组的字符和次数追加到结果中即可:

n = "DDDDTTTDAATTTAAAUYUUU"
con = 1
a = ""
d = ""
for i in range(len(n)-1):
    if n[i] == n[i+1]:
        con += 1
    else:
        d += " " + str(n[i])
        a += " " + str(con)
        con = 1
# 补充最后一组的字符和次数
d += " " + str(n[-1])
a += " " + str(con)
# 用strip()去掉开头多余的空格,让输出更整洁
print(d.strip())
print(a.strip())

运行这段代码后,就能得到你想要的正确输出:

D T D A T A U Y U
4 3 1 2 3 3 1 1 3

更优雅的优化方案(推荐)

字符串拼接在循环里效率不高,我们可以用列表来存储结果,最后用join方法格式化输出,代码可读性也更强:

n = "DDDDTTTDAATTTAAAUYUUU"
# 处理空字符串的边界情况
if not n:
    print("")
    print("")
    exit()

chars = []
counts = []
current_char = n[0]
current_count = 1

# 从第二个字符开始遍历
for char in n[1:]:
    if char == current_char:
        current_count += 1
    else:
        chars.append(current_char)
        counts.append(str(current_count))
        current_char = char
        current_count = 1

# 别忘了最后一组
chars.append(current_char)
counts.append(str(current_count))

print(" ".join(chars))
print(" ".join(counts))

这个版本不仅解决了遗漏问题,还能处理空字符串的边界情况,代码逻辑也更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:18:12