题意还原
给定压缩串 t(长度为 m,包含大小写字母)。从左到右处理:
x,在结果串 s 末尾追加一次 x;X,设它所在的极大连续段长度为 k,则在结果串末尾追加 2^k 次对应的小写字母 x,随后整体跳过这段。
输出解压后的全小写字符串 s。相关算法:线性扫描 + 分组(run-length)
Tk 有一个长度为 n 、仅由小写字母组成的字符串 s 。为了便于携带,Tk 将字符串 s 压缩为长度为 m 、仅由大小写字母组成的字符串 t 。解压缩满足如下规则(从左到右处理 t ):
若当前字符为小写字母 ′x’,则在还原串 s 的末尾追加一次小写字母 ′x’;
若当前字符为某个大写字母 ′X’ ,设其所在的极大连续段为区间 [l,r] (即 tl=⋅⋅⋅=tr=′X’,且 tl−1=′X’、tr+1=′X’,越界时忽略),令该段长度为 k=r−l+1 ,则在还原串 s 的末尾追加 2k 次对应的小写字母 ′x’,随后整体跳过这一段继续处理;
压缩前后不同字符出现的相对顺序保持不变。给定压缩后的字符串 t ,请输出压缩前的字符串 s 。
在一行上输入长度为 m 、仅由小写字母组成的字符串 t 。
在一行上输出长度为 n 、仅由小写字母组成的字符串 s 。
输入
5
aBBcD
输出
abbbbcdd