如何统计字符串不同字符数 奇偶判断代码始终输出ODD排查
功能异常排查
原代码预期实现「统计字符串中不同字符总数,判断总数为奇数还是偶数」的功能,但无论输入什么都输出ODD,核心问题有3个:
- 缩进不符合Python语法规范:Python靠缩进划分代码块,原代码中
flag=0、内层循环、重复判断的逻辑缩进层级完全混乱,直接导致运行逻辑和预期偏离。 - 统计逻辑完全错误:原代码没有对不重复字符做计数,反而每次遇到无重复的字符时,直接把
check变量赋值为该单字符,最终check只会存储最后一个遍历到的不重复字符,长度恒为1,因此len(check)%2永远不等于0,自然永远输出ODD。 - 遍历逻辑冗余:原代码用双重循环判断重复的时间复杂度为O(n²),完全没有必要,用内置结构可以用极低的成本实现去重。
修正实现
最简实现(利用集合自动去重特性)
集合的特性就是元素不重复,把字符串转成集合后直接取长度,就是不同字符的总个数,代码简洁运行效率高:
s = input() unique_count = len(set(s)) print("ODD" if unique_count % 2 else "EVEN")
手动遍历实现(保留逐字符判断的逻辑)
如果需要手动实现去重判断、不直接依赖集合特性,可以用列表存储已经出现过的字符,逐字符遍历统计:
s = input() unique_chars = [] for c in s: if c not in unique_chars: unique_chars.append(c) unique_count = len(unique_chars) if unique_count % 2 != 0: print("ODD") else: print("EVEN")
内容的提问来源于stack exchange,提问作者user19374990
相关产品推荐
相关产品推荐

