1 of 2

五、完善程序-1

字符串解码
“行程长度编码”(Run-Length Encoding)是一种无损压缩算法,常用于压缩重复字符较多的数据,以减少存储空间。假设原始字符串不包含数字字符,压缩规则如下:
● i) 如果原始字符串中一个字符连续出现N次(N≥2N ),在压缩字符串中它被表示为“字符+数字N”。例 如,编码“A12”代表12个连续的字符A。
● ii) 如果原始字符串中一个字符只出现1次,在压缩字符串中表示为该字符本身。例如,编码“B”代表1 个字符B。
以下程序实现读取压缩字符串并输出其原始的、解压后的形式,试补全程序。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <cctype>
#include <iostream>
#include <string>
using namespace std;

int main() {
	string z;
	cin >> z;
	string s = "";
	
	for (int i = 0; i < z.length(); ) {
		char ch = z[i];
		
		if (① && isdigit(z[i + 1])) {
			i++;
			int count = 0;
			while (i < z.length() && isdigit(z[i])) {
				count = ②;
				i++;
			}
			for (int j = 0; j < ③; ++j) {
				s += ch;
			}
		} else {
			s += ④;
			⑤;
		}
	}
	
	cout << s << endl;
	return 0;
}
Scroll to Top