【发布时间】:2019-02-26 23:53:08
【问题描述】:
大家好,我正在尝试以aaaabbcaaddd 的输入获得a4b2c1a2d3 的输出。我认为我下面的代码的问题是我实现以前的计数器的方式。 index > 0: 有问题吗?
string1 = "aaaabbcaaddd"
previous = ""
finalstr = ""
finalint = 1
for index, val in enumerate(string1):
if index > 0:
previous = string1[index - 1]
if previous == val:
finalint += 1
else:
finalstr += previous + str(finalint)
finalint = 1
print(finalstr)
#outputs "a4b2c1a2"
【问题讨论】:
-
您忘记在循环之后添加最后一个计数:
finalstr += previous + str(finalint)。 -
仅供参考,因为您在采访中提到您有这个问题。这个问题直接取自 Gayle McDowell 的《Cracking the Coding Interview (CTCI)》一书,基本上到处都推荐这本书用于面试准备。它在关于数组/字符串的第一章,我的第三版中的问题 1.6,称为“字符串压缩”。无论如何,我建议如果你在面试这样的算法时遇到问题,一定要尝试看看这本书并解决其中的问题(并且有解决方案可以仔细检查!)
-
啊,我确实经历了一点,但我很难理解问题和解决方案,因为(如果我没记错的话)它们是用 Java 编写的?而且我只处理过 JS 和 Python,抱歉,编程才 6 个月。谢谢顺便说一句!
标签: python string python-3.x for-loop