我正在尝试使用此代码将运行长度编码实现为python。
当我运行它时,我得到了超出范围的字符串索引错误,虽然不确定是什么导致了错误
text="aaabbbcc"
def encode(text):
prev = text[0]
lentext = len(text)
i = 1
while prev == text[i] and i < lentext:
i += 1
return prev + str(i) + encode(text[i:])
print(encode(text))
答案 0 :(得分:0)
在您可以检查i是否小于文本长度之前,您已经尝试访问文本的ith元素,这会导致异常。相反,将while循环编写为:
while i < lentext and prev == text[i]:
在尝试访问该文本索引之前,这将确保i
在范围内。
还请注意,如果您要使用递归算法,则需要一个基本案例来退出递归调用链。函数顶部可能类似以下内容:
if not text:
return ""
所以在一起:
text="aaabbbcc"
def encode(text):
if not text:
return ""
prev = text[0]
lentext = len(text)
i = 1
while i < lentext and prev == text[i]:
i += 1
return prev + str(i)+ encode(text[i:])
print(encode(text))