Leetcode Decode Ways-两次检查索引
Leetcode Decode Ways- Checking index twice
所以我正在尝试解决 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)
我无法理解,为什么 index == len(s) 和 index == len(s) - 1 条件
被使用? index == len(s) - 1 是否不足以检查我们是否已到达字符串末尾?
index == len(s) - 1
足以检查我们是否已到达字符串的末尾,但在该算法中它们仍然采用大小为 2
的步长。检查 id index == 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
会给你一个错误。
所以我正在尝试解决 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)
我无法理解,为什么 index == len(s) 和 index == len(s) - 1 条件 被使用? index == len(s) - 1 是否不足以检查我们是否已到达字符串末尾?
index == len(s) - 1
足以检查我们是否已到达字符串的末尾,但在该算法中它们仍然采用大小为 2
的步长。检查 id index == 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
会给你一个错误。