【发布时间】:2019-07-12 18:13:04
【问题描述】:
给定一个包含大写字母 (A-Z) 的字符串,使用运行长度编码压缩该字符串。必须通过存储该运行的长度来替换重复的字符。
我尝试了以下代码
#Code 1: Tried on my own
def encode(message):
list1=[]
for i in range (0,len(message)):
count = 1
while(i < len(message)-1 and message[i]==message[i+1]):
count+=1
i+=1
list1=str(count)+message[i]
return list1
encoded_message=encode("ABBBBCCCCCCCCAB")
print(encoded_message)
Input:AAAABBBBCCCCCCCC
Expected Output: 4A4B8C
#code 2:I tried this by looking at another code based on run-length encoding
def encode(message):
list1=[]
count=1
for i in range (1,len(message)):
if(message[i]==message[i-1]):
count+=1
else:
list1.append((count,list1[i-1]))
count=1
if i == len(messege) - 1 :
list1.append((count , data[i]))
return list1
encoded_message=encode("ABBBBCCCCCCCCAB")
print(encoded_message)
输入:AAAABBBBCCCCCCCC
预期输出:4A4B8C
第一个代码输出为 2B
【问题讨论】:
-
第一个
encode()函数在内部while 循环中包含一个return语句,这会导致函数立即退出。该循环只会运行一次。
标签: python string run-length-encoding