如何实现字符串连续重复字符的计数编码输出?
字符串连续重复字符计数编码实现方案
问题说明
你需要实现一个程序,完成以下功能:
- 首先输入一个整数N,表示后续要处理的字符串行数
- 接着输入N行无空格字符串(每行长度1-80)
- 对每行字符串,输出连续重复字符的编码结果:由「出现次数 字符」对组成,各对用空格分隔
示例演示
输入
4 +++===!!!! 777777......TTTTTTTTTTTT (AABBC) 3.1415555
输出
3 + 3 = 4 ! 6 7 6 . 12 T 1 ( 2 A 2 B 1 C 1 ) 1 3 1 . 1 1 1 4 1 1 4 5
Python 实现代码
这是一个简洁高效的实现,思路就是逐字符跟踪连续出现的次数,遇到不同字符就记录当前统计结果:
# 读取输入行数 line_count = int(input()) for _ in range(line_count): string = input().strip() # 空字符串处理(题目说每行1-80字符,这里做个兜底) if not string: print("") continue encoded_parts = [] current_char = string[0] current_count = 1 # 从第二个字符开始遍历 for char in string[1:]: if char == current_char: current_count += 1 else: # 记录当前统计的字符和次数 encoded_parts.append(f"{current_count} {current_char}") current_char = char current_count = 1 # 别忘了添加最后一组字符的统计结果 encoded_parts.append(f"{current_count} {current_char}") # 拼接成结果字符串并打印 print(" ".join(encoded_parts))
代码逻辑拆解
- 输入读取:先获取要处理的行数,然后循环处理每一行
- 初始化跟踪变量:用
current_char存当前正在统计的字符,current_count存连续出现的次数 - 字符遍历统计:逐个检查后续字符,和当前字符相同就累加计数,不同就把之前的结果存起来,更新跟踪变量
- 收尾处理:循环结束后,最后一组字符还没存入结果,必须手动添加
- 结果输出:把所有统计对用空格连接,打印出编码后的字符串
这个代码能完美处理所有符合要求的输入,包括各种特殊字符(括号、小数点、数字等),逻辑简单易懂,也容易修改成其他语言的版本。
内容的提问来源于stack exchange,提问作者Tolga the Traveler
相关产品推荐
相关产品推荐

