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

关于字符Run Length Encoding代码的调试请求:输入"aaabba"时输出缺失末尾字符统计项

问题分析与修复方案

你的问题出在外层循环的终止条件上,导致最后一个单独的字符完全没被处理。我们来一步步拆解问题根源:

原代码的执行漏洞(以输入"aaabba"为例)

输入字符串长度n=6,初始i=0:

  1. 第一个内层循环处理连续的aaa:count累加至3,i最终变为2;随后i +=1变成3。
  2. 第二个内层循环处理连续的bb:count累加至2,i最终变为4;随后i +=1变成5。
  3. 此时外层循环条件是i < n-1(也就是5 <5),条件不成立,循环直接终止——最后一个索引为5的字符a完全没进入处理逻辑,所以输出少了a1。

修复方案(基于原有代码的最小改动)

把外层循环的终止条件从i < n-1改为i < n,同时调整输出逻辑的顺序,确保每个字符(包括最后一个)都能被输出:

st = "aaabba"
n = len(st)
i = 0
while i < n:  # 改为i < n,覆盖所有字符索引
    count = 1
    # 内层循环仅在不是最后一个字符且当前字符与下一个相同时执行
    while (i < n-1 and st[i] == st[i+1]):
        count += 1
        i += 1
    # 先输出当前字符的统计结果
    print(st[i] + str(count), end="")
    i += 1  # 再移动到下一个字符

修复后执行流程

当i=5时,外层循环条件5 <6成立:

  • count初始化为1,内层循环条件5 <5不成立,直接跳过内层循环;
  • 输出st[5] + str(1)也就是a1;
  • 最后i +=1变成6,外层循环终止,最终输出a3b2a1,完全符合预期。

如果追求更Pythonic的写法,也可以用itertools.groupby来简化逻辑,但上面的修改是在你原有代码基础上的最小调整,最容易理解和维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:37:36