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

相邻相同字符计数代码遗漏最后2个值,求修复与优化方案

修复相邻字符计数遗漏最后一组的问题

原代码的问题分析

  • 循环仅遍历到倒数第二个字符(range(l1)等价于0到len(val)-2),最后一组相同字符的计数没机会输出——你的打印逻辑只有在遇到不同字符时才触发,最后一组后面没有不同字符触发打印,直接遗漏。
  • 代码里char_count + 1是无效语句,没有将计算结果赋值回变量,等于没执行。
  • 定义了count0但全程未使用,属于冗余代码。

修复原代码的方案

在循环结束后,手动打印最后一组字符的计数即可:

val = "111100001100"  # 输入值
count1 = 0  # 统计当前连续字符的数量
length = len(val)
l1 = length - 1 

# 遍历到倒数第二个字符,对比当前字符和下一个字符
for char_idx in range(l1):
    if val[char_idx + 1] == val[char_idx]:
        count1 += 1
    else:
        print(count1 + 1)
        count1 = 0
# 循环结束后,打印最后一组的计数
print(count1 + 1)

运行后就能输出预期的4、4、2、2。


更通用的优化版本

如果需要处理任意字符的输入,并且输出为空格分隔的格式,可以用更简洁的逻辑:

val = "111100001100"
# 先处理空字符串的特殊情况
if not val:
    print("")
    exit()

current_char = val[0]
count = 1
result = []

# 从第二个字符开始遍历
for char in val[1:]:
    if char == current_char:
        count += 1
    else:
        result.append(str(count))
        current_char = char
        count = 1
# 追加最后一组的计数
result.append(str(count))

# 用空格拼接成目标格式输出
print(" ".join(result))

这个版本能适配任何由连续重复字符组成的输入,输出结果为4 4 2 2,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:15:54