#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