编辑:这似乎不仅仅是一个错误的错误。
我在以下简单算法中遇到了一个错误,该算法应该显示字符串中的字母数,沿run-length encoding
.
我可以看到为什么最后一个字符没有添加到结果字符串中,但是如果我增加range
ofi
我会得到index out of range
明显的原因。
我想从算法设计的角度了解这里的概念问题,以及让我的代码正常工作。
我是否需要一些特殊情况代码来处理原始字符串中的最后一项?或者将当前字符与previous
字符进行比较可能更有意义,尽管这在算法开始时会造成问题?
这种算法是否有一种通用方法,将当前元素与前一个/下一个元素进行比较,从而避免索引超出范围的问题?
def encode(text):
# stores output string
encoding = ""
i = 0
while i < len(text) - 1:
# count occurrences of character at index i
count = 1
while text[i] == text[i + 1]:
count += 1
i += 1
# append current character and its count to the result
encoding += text[i] + str(count)
i += 1
return encoding
text = "Hello World"
print(encode(text))
# Gives H1e1l2o1 1W1o1r1l1