我必须使用具有相应二进制代码的字符字典来解码一串 1 和 0。字典是这样设置的:
self.codes = {'a': '00', 'h': '111', 'e': '110', 'l': '01', 'o': '10'}
这些代码是这样的,没有二进制代码是任何其他代码的前缀。目前我有这个功能来做解码:
def decode(self, ciphertext):
start = 0
while start < len(ciphertext):
for k in self.codes:
res = ciphertext.find(self.codes[k], start)
if res == start:
decoded += k
start += len(self.codes[k])
return decoded
(其中 ciphertext = 要解码的文本,self.codes = 表示编码系统的字典)
不出所料,这真的很慢。谁能指出我对这种事情更有效的算法?
[编辑] 谢谢大家的好建议。我会在回家的几个小时内尝试实施它们。