游程编码

游程编码是一种在线搞笑的压缩算法

题目

  • 游程编码的做法简单,将连续出现的字符转换成次数和该字符的组合,例如“aaaabcccaa”,编码后“4q1b3c2a”。解码也同理。

代码

class RLE:
def decode(self,str):
str += " "
current = ""
count = 0
result = ''
for i in str:
if not current:
current = i
count = 1
continue
if i == current:
count += 1
else:
if count == 0:
result += current
else:
result += '{}{}'.format(count,current)
current = i
count = 1
return result
def encode(self,str):
result = ""
number = ''
i=0
for i in str:
if i.isdigit():
number += i
continue
else:
print("{}:{}".format(i,number))
result += i*int(number)
number = ''
return result
r = RLE()
print(r.decode("aaaabcccaa"))
print(r.encode("3e4f2e"))