leetcode-91-解码方法

Posted oldby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-91-解码方法相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

 

 题目描述:

技术图片

 方法一:回溯(超时)

class Solution:
    def numDecodings(self, s: str) -> int:
        res = 0
        def backtrack(s):
            nonlocal res
            if not s:
                res += 1
                return
            if int(s[:1]) > 0: 
                backtrack(s[1:]) 
            if len(s) > 1 and not s[:2].startswith(0) and 0 < int(s[:2]) <= 26: 
                backtrack(s[2:])
        backtrack(s)
        return res

方法二:动态规划

class Solution:
    def numDecodings(self, s: str) -> int: 
        if not s or s.startswith(0): 
            return 0 
        pre_pre = pre = 1 
        for i in range(1, len(s)): 
            cur = 0 
            if s[i] != 0: 
                cur += pre 
            if s[i - 1] != 0 and int(s[i - 1:i + 1]) <= 26: 
                cur += pre_pre 
            pre_pre, pre = pre, cur 
        return pre

 

以上是关于leetcode-91-解码方法的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode#91-解码方法

LeetCode 91 动态规划 Decode Ways 解码方法

leetcode 91. 解码方法

leetcode 91. 解码方法

leetcode-91-解码方法

leetcode-91-解码方法