压缩软件
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
最近, 遇到了一个大麻烦。由于长期囤积屎山代码,他的电脑硬盘容量条已经红得发紫。
为了腾出空间,他决定自己开发一个压缩软件。他想到了游程编码(Run-Length Encoding, RLE)。这是一种简单的无损压缩方法,其基本思想是将连续重复出现的字符替换为“重复次数+字符”的形式,例如:
- 字符串 可以被压缩为 ;
- 字符串 可以被压缩为 ;
然而,他在测试中发现了一个尴尬的问题:对于很短的连续字符,盲目使用标准 反而会浪费空间。
- 例如:原文 ( 字节),压缩后变成 ( 字节),变长了!
- 例如:原文 ( 字节),压缩后变成 ( 字节),没变化!
为了追求极致的空间和时间利用率, 制定了一套 “智能游程编码” 规则:
- 统计连续出现的字符片段。
- 只有当压缩后的长度严格小于原文长度时,才进行压缩。
- 这意味着,只有当连续字符的数量 时,才将其转换为 的形式。
- 如果连续字符数量为 或 ,则保持原样输出。
例如:
$$\begin{array}{l l l} \text{AAAA} & \rightarrow & \text{4A} \quad (4\text{ 字节变为 }2\text{ 字节,赚了}) \\ \text{BBB} & \rightarrow & \text{3B} \quad (3\text{ 字节变为 }2\text{ 字节,赚了}) \\ \text{CC} & \rightarrow & \text{CC} \quad (2\text{ 字节变为 }2\text{ 字节,不压}) \\ \text{D} & \rightarrow & \text{D} \quad (1\text{ 字节变为 }2\text{ 字节,亏了,不压}) \end{array}$$现在,请你帮 实现这个核心压缩算法。
输入格式
输入包含一行,为一个由大写英文字母组成的字符串 。 字符串长度满足 。
输出格式
输出一行,表示经过“智能游程编码”规则压缩后的字符串。
输入输出样例
HHHHHHPPPRRRROOOOOOOOGGGGGGGQQQQQ
6H3P4R8O7G5Q
AAAABBBCCDEEEEEEEEEEE
4A3BCCD11E
软件学院 2025 级编程竞赛实验班结业选拔考试
- 状态
- 已完成
- 规则
- XCPC
- 题目
- 13
- 开始于
- 2025-12-28 18:00
- 结束时间
- 2025-12-28 20:00
- 持续时间
- 2 小时
- 主持人
- 参赛人数
- 69