#G3010. 字符串压缩
字符串压缩
题目描述
为了节省短信的字数,小红发明了一种「压缩」方法:把字符串中连续相同的一段字母写成「这个字母 + 它连续出现的次数」;如果某个字母只连续出现了 次,就只写字母,不写数字。
例如:
aaabcc压缩后是a3bc2;xxxxxxxxxxxxy( 个x和 个y)压缩后是x12y。
现在你要帮小红编写一个程序,它有两种功能:
- 功能 1:给出原来的字符串,输出压缩后的字符串;
- 功能 2:给出一个压缩后的字符串,把它还原成原来的字符串。
输入格式
第一行一个整数 ( 或 ),表示要使用的功能。
第二行一个字符串 ,只包含小写字母和数字。
- 若 , 是原字符串,只包含小写字母;
- 若 , 是压缩后的字符串,保证它是某个原字符串按上述规则压缩得到的。
输出格式
一行一个字符串,表示压缩()或还原()的结果。
样例 #1
样例输入 #1
1
aaabccddddddddddddx
样例输出 #1
a3bc2d12x
样例 #2
样例输入 #2
2
x2yz10
样例输出 #2
xxyzzzzzzzzzz
样例解释
样例 1:aaa → a3,b → b,cc → c2, 个 d → d12,x → x。
样例 2:x2 → xx,y → y,z10 → 个 z。注意次数可能是两位或更多位的数。
提示
数据范围
记原字符串(压缩前)的长度为 。
- 对于 的数据:;
- 对于另外 的数据:,且压缩串中每个次数都只有一位数字;
- 对于 的数据:。
提示
- 功能 1:用一个下标 从左往右走,每次再用一个下标 往后数出和
s[i]相同的有多少个,处理完后让 跳到 。 - 功能 2:读到一个字母后,把它后面连续的数字字符拼成一个整数(
k = k * 10 + (c - '0')),没有数字就表示 次。 - 把整数变成字符串可以用
to_string。
相关
在下列比赛中: