You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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)

关键修改说明:

  1. 循环内的拼接逻辑:在每次遇到不同字符时,不再直接拼接字符+计数,而是先判断count是否为1,仅当计数大于1时才附加数字。
  2. 最后一组字符的处理:循环结束后处理最后一个字符组时,同样加入计数判断,避免末尾单个字符带1。

测试输入abbbbbc,输出会变为ab5c,符合你的需求。

内容的提问来源于stack exchange,提问作者Bedbug exterminator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:17:11