Run-Length编码优化:计数为1时不显示数值
游程编码优化需求
现有一段实现游程编码的Python代码,当前逻辑会给每个字符都追加出现次数,包括仅出现1次的字符,需要优化这一行为。
原代码
def encode(message): encoded_message = "" i = 0 while (i <= len(message)-1): count = 1 ch = message[i] j = i while (j < len(message)-1): if (message[j] == message[j+1]): count = count+1 j = j+1 else: break encoded_message=encoded_message+str(count)+ch i = j+1 return encoded_message # 测试示例 encoded_message=encode("ABBBBCCCCCCCCAB") print(encoded_message)
当前输出与期望输出
- 当前运行输出:
1A4B8C1A1B - 优化需求:当字符仅出现1次时,不显示计数数字,仅保留字符本身,期望输出:
A4B8CAB
修改后的代码
只需在拼接编码结果时增加判断:若计数为1则只追加字符,否则追加计数和字符。
def encode(message): encoded_message = "" i = 0 while (i <= len(message)-1): count = 1 ch = message[i] j = i while (j < len(message)-1): if (message[j] == message[j+1]): count = count+1 j = j+1 else: break # 根据计数决定拼接内容 if count == 1: encoded_message += ch else: encoded_message += str(count) + ch i = j+1 return encoded_message # 测试示例 encoded_message=encode("ABBBBCCCCCCCCAB") print(encoded_message)
运行结果
修改后运行代码,输出为:A4B8CAB,完全符合需求。
内容的提问来源于stack exchange,提问作者tarek zain
相关产品推荐
相关产品推荐

