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

Python 3代码在CSES习题1069的第9、10测试用例运行异常求助

CSES 1069题Python代码错误修复

我在解决CSES平台编号1069的习题时,Python 3代码在第9、10测试用例无法输出正确结果,尝试多种方法仍未解决。代码输出与正确输出的对比显示结果存在偏差。

我的原代码如下:

count = 1
s = 1
longest_count = 1
input = input()

characters = []
for char in input :
    characters.append(char)

x = len(characters)

n = 0

while n < x - 1 :
    if characters[n] == characters[n+1]:
        count = count + 1
    elif s < count :

        s = count
        count = 1

    n = n + 1
    
if count < s : 
    print(s)
else : 
    print(count)

错误原因分析

核心问题是字符不相等时的逻辑处理遗漏:
当当前字符和下一个字符不同时,只有在count > s的情况下才会更新s并重置count;但如果count <= s,代码既不更新s,也不重置count。这会导致后续新的连续字符段从之前的count值开始累加,而非从1重新计数,最终算出错误的连续长度。
另外代码里定义的longest_count变量完全没用到,属于冗余代码,可以直接删除。

修复后的代码

修复思路很简单:只要字符不相等,不管当前count是否大于最大值,都先检查是否要更新最大值,然后必须把count重置为1,确保下一段从1开始计数。

简化版代码

count = 1
max_len = 1
input_str = input()

for i in range(len(input_str) - 1):
    if input_str[i] == input_str[i+1]:
        count += 1
        if count > max_len:
            max_len = count
    else:
        count = 1

print(max_len)

基于原代码修改版

count = 1
max_len = 1
input_str = input()
characters = list(input_str)
x = len(characters)
n = 0

while n < x - 1:
    if characters[n] == characters[n+1]:
        count += 1
    else:
        if count > max_len:
            max_len = count
        count = 1
    n += 1

# 最后检查最后一段连续字符的长度
print(max(count, max_len))

修复说明

  1. 移除了无用的longest_count变量,简化代码结构。
  2. 调整字符不相等时的逻辑:无论当前连续长度是否超过最大值,都要重置count为1,避免后续计数错误。
  3. 优化了变量命名(比如把s改成max_len),让代码可读性更强。
  4. 简化版直接遍历输入字符串,无需转成列表,提升代码简洁度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:39:50