我想为一个我必须做的CS项目创建一个RLE压缩和解压方法。问题不在于逻辑,而在于 C++ 的技术诀窍。我目前在学校学到的都是 Python,所以我尝试用 Python 做这个项目,这真的很容易......
我打算好好阅读 C++,但今晚没有足够的时间。我希望能得到帮助,因为如果我能理解等效的 C++ 代码,我可能会对这种语言感到更舒服。
有人可以帮我将以下 python 代码转换为 C++ 等效代码吗?
# compresses data using RLE compression
def compress(data):
letter_counter = 1
new_data = []
for i in range(len(data)):
try:
# if the element is the same as the next one
if data[i] == data[i + 1]:
letter_counter += 1
# if different element than previous index
else:
new_data.append(str(letter_counter) + data[i])
letter_counter = 1 # reset the letter count
except IndexError: # when the index is out of range (no more elements)
new_data.append(str(letter_counter) + data[i])
return new_data
data = ['w', 'w', 'w', 'w', 'w', 'b', 'b', 'b', 'c', 'd', 'e', 'e']
data2 = ['w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w']
return compress(data) # prints ['5w', '3b', '1c', '1d', '2e']
return compress(data2) # prints ['14w']