Leetcode解码方式-检查索引两次



所以我正在努力解决Leetcode解码方式的问题(https://leetcode.com/problems/decode-ways/)我发现他们的解决方案令人困惑。

def recursiveWithMemo(self, index, s) -> int:
# If you reach the end of the string
# Return 1 for success.
if index == len(s):
return 1
# If the string starts with a zero, it can't be decoded
if s[index] == '0':
return 0
if index == len(s)-1:
return 1

answer = self.recursiveWithMemo(index + 1, s)
if int(s[index : index + 2]) <= 26:
answer += self.recursiveWithMemo(index + 2, s)
return answer
def numDecodings(self, s: str) -> int:
return self.recursiveWithMemo(0, s)

我不明白,为什么索引==len(s(和索引==len(s(-1条件是否使用?index==len(s(-1是否不足以检查是否已到达字符串末尾?

index == len(s) - 1足以检查我们是否已经到达字符串的末尾,但在该算法中,他们仍在采取大小为2的步骤。检查idindex == len(s)并不是因为他们想检查自己是否到达了字符串的末尾,而是为了不在下一行遇到错误:

# If the string starts with a zero, it can't be decoded
if s[index] == '0':
return 0

如果index = len(s)条件if s[index] == 0会给您一个错误。

相关内容

  • 没有找到相关文章

最新更新