首先,你的测试与任务不匹配:它要求大约s="ha22", k=5
分,而你只有, k = 15
分.这没有答案,因为s="ha22"
的结果是字符串"hahahaha"
--而这只有8个字符.在索引15处没有字符,并且您打破了给定的约束:"可以保证k小于或等于已解码字符串的长度."
您的代码中还有另一个无关的问题:
if len(newstring) == k:
break
由于字符串可以按大于1的步长增长,因此您可能需要判断k
是否‘大于或等于’长度.
您认为Python做错了事情,计算结果是4 == 15
到True
--每当这样想的时候,您几乎肯定是错的.在一种地球上最流行的语言中,一个如此严重的问题就会被发现.更有可能的是你错过了一些重要的东西.在本例中,a.)一条解释问题的错误消息,b.)您答错了问题,c.)您的函数没有以您认为的方式退出循环.
请注意,无论采用哪种方式,它都可以工作--在许多情况下,它只完成整个解码的字符串,然后仍然返回正确的答案.
以下是只有4处更改的代码:正确问题、第3个问题、演示代码问题的第4个问题以及修复:
class Solution(object):
def decodeAtIndex(self, s, k):
newstring = str()
for i in range(len(s)):
print(f"checking ({newstring})-({len(newstring)}) is equals to ({k})")
# fixed:
if len(newstring) >= k:
break
if s[i].isalpha():
newstring += s[i]
continue
currentstring = newstring
for j in range(int(s[i])-1):
newstring += currentstring
return newstring[k-1]
sol = Solution()
print(sol.decodeAtIndex(s="leet2code3", k=10))
#this is the correct problem:
print(sol.decodeAtIndex(s="ha22", k=5))
print(sol.decodeAtIndex(s="a2345678999999999999999", k=1))
#an extra problem:
print(sol.decodeAtIndex(s="a22bc2c222222222", k=10))
输出o
、h
、a
和a
(带有打印的解释).
请注意,如果您undo撤消修复,则会得到添加的问题的以下输出:
checking ()-(0) is equals to (10)
checking (a)-(1) is equals to (10)
checking (aa)-(2) is equals to (10)
checking (aaaa)-(4) is equals to (10)
checking (aaaab)-(5) is equals to (10)
checking (aaaabc)-(6) is equals to (10)
checking (aaaabcaaaabc)-(12) is equals to (10)
checking (aaaabcaaaabcc)-(13) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabcc)-(26) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(52) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(104) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(208) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(416) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(832) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(1664) is equals to (10)
checking (aaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabccaaaabcaaaabcc)-(3328) is equals to (10)
a
不是很好,还是对的.