题目名称 4036. 解压缩
输入输出 extract.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2024-10-21加入
开放分组 全部用户
提交状态
分类标签
括号匹配
分享题解
通过:7, 提交:10, 通过率:70%
Gravatar1nclude 100 0.029 s 3.40 MiB C++
Gravatar小金 100 0.030 s 3.37 MiB C++
Gravatar健康铀 100 0.030 s 3.37 MiB C++
GravatarDavinci 100 0.030 s 3.39 MiB C++
Gravatarsyzhaoss 100 0.032 s 3.37 MiB C++
Gravatar健康铀 100 0.168 s 18.63 MiB C++
Gravatarwdsjl 100 0.183 s 18.66 MiB C++
Gravatar花火 10 0.030 s 3.36 MiB C++
Gravatarwdsjl 0 2.040 s 3.20 MiB C++
Gravatar健康铀 0 2.301 s 18.39 MiB C++
本题关联比赛
20241022
关于 解压缩 的近10条评论(全部评论)

4036. 解压缩

★★   输入文件:extract.in   输出文件:extract.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目背景】

神犇最近在研究字符串算法。

【题目描述】

神犇发明了一种字符串压缩算法:对于字符串S中的若干个连续相同的子串T,可以被压缩为[DT],其中D是一个非负整数,表示子串T连续出现了多少次。

例如,字符串ABABABABABAB可以被压缩为[6AB],当然也可以压缩为[2[3AB]]、[3[2AB]]、[2[2AB]AB]等。类似[6AB]的压缩称为一重压缩,类似[2[3AB]]和[2[2AB]AB]的称为二重压缩,依此类推。

显然,一个字符串的压缩结果可能有若干种,算法实现比较困难,所以神犇自己实现了,现在他决定将解压缩的算法交给你(未来的神犇)来训练自己的编程能力。

【输入格式】

一行一个字符串S,表示压缩后的字符串。

【输出格式】

一行一个字符串,表示字符串解压缩之后的结果。

【样例1输入】

[2BILI]

【样例1输出】

BILIBILI

【样例2输入】

CSP[2[2TASK]][4AC]AK

【样例2输出】

CSPTASKTASKTASKTASKACACACACAK

【样例3输入】

A[2[3[5B]]][3[2C]D[3E]]

【样例3输出】

ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCDEEECCDEEECCDEEE

样例下载

【数据规模与约定】

对于$20\%$的数据,最多只有一重压缩。

对于$40\%$的数据,最多只有三重压缩。

对于另外$10\%$的数据,保证所有压缩格式[DT]中的D=1,T为合法的压缩字符串。

对于$100\%$的数据,$|S|\leq 500$,解压缩后的字符串长度不超过$2\times 10^4$,最多只有十重压缩,输入保证只含有[]、数字字符和大写字母且压缩字符串无需判定是否合法。

合法的压缩字符串定义为:

1. 完全由大写字母构成的字符串;

2. 如果字符串A和字符串B是合法压缩字符串,那么AB也是合法压缩字符串。

3. 如果字符串A是合法压缩字符串,那么[DA]是一个合法压缩字符串,其中D为不包含前导$0$的正整数。