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))
修复说明
- 移除了无用的
longest_count变量,简化代码结构。 - 调整字符不相等时的逻辑:无论当前连续长度是否超过最大值,都要重置
count为1,避免后续计数错误。 - 优化了变量命名(比如把
s改成max_len),让代码可读性更强。 - 简化版直接遍历输入字符串,无需转成列表,提升代码简洁度。
内容的提问来源于stack exchange,提问作者user20954198
相关产品推荐
相关产品推荐

