如何修改RLE压缩程序,去除单个字符后的计数1?
解决RLE压缩中单个字符不显示计数1的问题
你只需要修改代码中拼接字符与计数的逻辑:当计数count为1时,只添加字符本身;当count大于1时,再同时添加字符和计数。修改后的完整代码如下:
def rle(character_string): compressed_string = "" count = 1 for i in range(len(character_string)-1): if character_string[i] == character_string[i+1]: count += 1 else: # 计数为1时只加字符,否则加字符+计数 if count == 1: compressed_string += character_string[i] else: compressed_string += character_string[i] + str(count) count = 1 # 处理最后一组字符 if count == 1: compressed_string += character_string[-1] else: compressed_string += character_string[-1] + str(count) if len(compressed_string) >= len(character_string): return character_string return compressed_string user_string = input("hello user spam character: ") x = rle(user_string) print(x)
关键修改说明:
- 循环内的拼接逻辑:在每次遇到不同字符时,不再直接拼接
字符+计数,而是先判断count是否为1,仅当计数大于1时才附加数字。 - 最后一组字符的处理:循环结束后处理最后一个字符组时,同样加入计数判断,避免末尾单个字符带
1。
测试输入abbbbbc,输出会变为ab5c,符合你的需求。
内容的提问来源于stack exchange,提问作者Bedbug exterminator
相关产品推荐
相关产品推荐

