运行长度编码python;字符串索引超出范围错误

时间:2018-07-16 04:17:01

标签: python-3.x

我正在尝试使用此代码将运行长度编码实现为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))

1 个答案:

答案 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))