对于特定的输出模式,如何在 python 中进行 运行 长度编码? (不使用 groupby 和输出列表)
How to do run length encoding in python for a specific pattern of output? (without using groupby and lists for output)
需要编写一个 python 函数来对给定字符串执行 运行 长度编码,并 returns 运行 长度编码字符串。
浏览了 Google 中 Stack Overflow 和其他网站中的各种帖子,以正确理解 Python 中的 运行 长度编码。尝试编码并获得了一些输出,但它与指定的输出不匹配。我在下面说明了我的代码和输出:
def encode(input_string):
characters = []
result = ''
for character in input_string:
# End loop if all characters were counted
if set(characters) == set(input_string):
break
if character not in characters:
characters.append(character)
count = input_string.count(character)
result += character
if count > 1:
result += str(count)
return result
#Provide different values for message and test your program
encoded_message=encode("ABBBBCCCCCCCCAB")
print(encoded_message)
对于上面的字符串,我得到的输出为:A2B5C8
但预期的输出是:1A4B8C1A1B
如果有人告诉我在哪里更改代码以获得预期的输出格式,那就太好了。
您可以使用以下函数来获得所需的输出:
string = "ABBBBCCCCCCCCAB"
def encode(string):
counter = 1
result = ""
previousLetter = string[0]
if len(string)==1:
return str(1) + string[0]
for i in range(1,len(string),1):
if not string[i] == previousLetter:
result += str(counter) + string[i-1]
previousLetter = string[i]
counter = 1
else:
counter += 1
if i == len(string)-1:
result += str(counter) + string[i]
return result
result = encode(string)
print(result)
输出:
1A4B8C1A1B
需要编写一个 python 函数来对给定字符串执行 运行 长度编码,并 returns 运行 长度编码字符串。
浏览了 Google 中 Stack Overflow 和其他网站中的各种帖子,以正确理解 Python 中的 运行 长度编码。尝试编码并获得了一些输出,但它与指定的输出不匹配。我在下面说明了我的代码和输出:
def encode(input_string):
characters = []
result = ''
for character in input_string:
# End loop if all characters were counted
if set(characters) == set(input_string):
break
if character not in characters:
characters.append(character)
count = input_string.count(character)
result += character
if count > 1:
result += str(count)
return result
#Provide different values for message and test your program
encoded_message=encode("ABBBBCCCCCCCCAB")
print(encoded_message)
对于上面的字符串,我得到的输出为:A2B5C8
但预期的输出是:1A4B8C1A1B
如果有人告诉我在哪里更改代码以获得预期的输出格式,那就太好了。
您可以使用以下函数来获得所需的输出:
string = "ABBBBCCCCCCCCAB"
def encode(string):
counter = 1
result = ""
previousLetter = string[0]
if len(string)==1:
return str(1) + string[0]
for i in range(1,len(string),1):
if not string[i] == previousLetter:
result += str(counter) + string[i-1]
previousLetter = string[i]
counter = 1
else:
counter += 1
if i == len(string)-1:
result += str(counter) + string[i]
return result
result = encode(string)
print(result)
输出:
1A4B8C1A1B