相邻相同字符计数代码遗漏最后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
相关产品推荐
相关产品推荐

