#dxy26002. 智能行程编码
智能行程编码
当前没有测试数据。
题目描述
小明在开发一种**智能行程编码(Smart Run-Length Encoding)**算法,规则如下:
编码规则(E 操作):
- 遍历字符串,统计连续相同字符的出现次数。
- 如果连续出现次数 ≥ 3,则压缩为
字符 + 次数。 - 如果连续出现次数 < 3,保持原样不压缩。
- 字符串仅由大写字母 A-Z 组成。
解码规则(D 操作):
- 将经过上述编码的字符串还原。
- 注意:次数可能是多位数(如
A12表示 12 个A)。
示例:
| 操作 | 输入 | 输出 | 说明 |
|---|---|---|---|
| 编码 | AAABBBCCDAA |
A3B3CCDA2 |
AAA→A3, BBB→B3, CC(2次不压), D(1次不压), AA(2次不压) |
AAAAAAAAAAAA |
A12 |
12 个 A 压缩为 A12 | |
HELLO |
无连续 ≥3 的段,全部保留 | ||
| 解码 | A3B3CCDA2 |
AAABBBCCDAA |
A3→AAA, B3→BBB, C→C, C→C, D→D, A2→AA |
X1Y1Z1 |
XYZ |
次数为 1 时也正确还原 | |
输入格式
两行:
- 第一行:一个字符
op,'E'表示编码,'D'表示解码。 - 第二行:字符串
S。- 编码时:S 仅含大写字母,长度 ≤ 1000。
- 解码时:S 含大写字母和数字,长度 ≤ 1000,保证解码后长度 ≤ 10000。
输出格式
一行,操作后的结果字符串。
样例
样例1(编码):
输入:
E
AAABBBCCDAA
输出:
A3B3CCDA2
样例2(解码,含多位数次数):
输入:
D
A12B3C
输出:
AAAAAAAAAAAABBBC
解释:
A12 → 12 个 A
B3 → 3 个 B
C → 1 个 C
样例3(编码,无压缩):
输入:
E
HELLO
输出:
HELLO
解释:
H(1次), E(1次), L(2次), O(1次) — 所有段都 <3,保持原样。
样例4(解码,单字符):
输入:
D
X1Y1Z1
输出:
XYZ
数据范围与约束
| 参数 | 范围 |
|---|---|
| 编码输入长度 | 1 ≤ |S| ≤ 1000 |
| 解码输入长度 | |
| 解码后长度 | ≤ 10000 |
| 字符集(编码输入) | 大写字母 A-Z |
| 字符集(解码输入) | 大写字母 + 数字 0-9 |