任务描述 本关任务:参照教材,实现行程编码算法。 测试说明 测试输入:AAAAAACTEEEEEHHHHHHHSSSSSSSS 预期输出:6A1C1T5E7H8S 测试输入:BBFFF 预期输出:2B3F python
时间: 2024-09-10 13:25:38 浏览: 55
行程编码(Run-Length Encoding,RLE)算法是一种简单有效的数据压缩方法,它通过统计连续重复字符的个数来简化数据。具体的算法步骤如下:
1. 遍历输入的字符串,统计每个字符连续出现的次数。
2. 对于每个字符,如果它连续出现了一次以上,就将其字符和出现次数按照“字符+次数”的格式输出。
3. 如果字符只出现了一次,则直接输出该字符。
下面是根据上述算法用Python实现的一个例子:
```python
def run_length_encode(input_string):
# 如果输入字符串为空,直接返回空字符串
if not input_string:
return ""
# 初始化编码字符串和计数器
encoded_str = ""
count = 1
# 遍历字符串,从第二个字符开始比较
for i in range(1, len(input_string)):
# 如果当前字符与前一个字符相同,则计数器加一
if input_string[i] == input_string[i-1]:
count += 1
else:
# 否则,将前一个字符和计数器加入到编码字符串
encoded_str += str(count) + input_string[i-1]
# 重置计数器
count = 1
# 遍历结束后,处理最后一个字符序列
encoded_str += str(count) + input_string[-1]
return encoded_str
# 测试用例
print(run_length_encode("AAAAAACTEEEEEHHHHHHHSSSSSSSS")) # 预期输出:6A1C1T5E7H8S
print(run_length_encode("BBFFF")) # 预期输出:2B3F
```
这段代码定义了一个`run_length_encode`函数,它接收一个字符串参数`input_string`,并返回按行程编码算法压缩后的字符串。函数中使用了两个变量`encoded_str`和`count`,分别用于存储最终的编码字符串和当前字符的出现次数。通过遍历输入字符串,并对连续出现的字符进行计数和编码,最终生成压缩后的字符串。
阅读全文