美文网首页动态规划
[DP]91. Decode Ways

[DP]91. Decode Ways

作者: 野生小熊猫 | 来源:发表于2019-02-15 08:54 被阅读0次
  • 分类:DP
  • 时间复杂度: O(n)
  • 空间复杂度: O(n)

91. Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping:

'A' -> 1
'B' -> 2
...
'Z' -> 26

Given a non-empty string containing only digits, determine the total number of ways to decode it.

Example 1:

Input: "12"
Output: 2
Explanation: It could be decoded as "AB" (1 2) or "L" (12).

Example 2:

Input: "226"
Output: 3
Explanation: It could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).

代码:

DP解法:

class Solution:
    def numDecodings(self, s: 'str') -> 'int':
        
        if s==None or len(s)==0:
            return 0
        
        dp=[0 for i in range(len(s)+1)]
        dp[0]=1
        for i in range(1,len(s)+1):
            if int(s[i-1])!=0:
                dp[i]+=dp[i-1]
            if i>1 and 10<=int(s[i-2:i]) and int(s[i-2:i])<=26:
                dp[i]+=dp[i-2]
        return dp[-1]

记忆化递归解法:

class Solution:
    
    def numDecodings(self, s: 'str') -> 'int':
        
        if s==None or len(s)==0:
            return 0
        
        res=self.dfs(s,0,{})
        return res
    
    def dfs(self,s,i,memo):
        if (s,i) in memo:
            return memo[(s,i)]

        if i==len(s):
            return 1
        if int(s[i])==0:
            return 0
        
        res=self.dfs(s,i+1,memo)
        if 10<=int(s[i:i+2]) and int(s[i:i+2])<=26:
            res+=self.dfs(s,i+2,memo)
        memo[(s,i)]=res
        return res

讨论:

1.这道题decode way是计数类的题目,计数类的题目几乎都可以用记忆化递归和DP来求解

相关文章

  • [DP]91. Decode Ways

    分类:DP 时间复杂度: O(n) 空间复杂度: O(n) 91. Decode Ways A message c...

  • 91. Decode Ways

    91. Decode Ways 题目:https://leetcode.com/problems/decode-w...

  • LeetCode 91-95

    91. Decode Ways[https://leetcode-cn.com/problems/decode-w...

  • 91. Decode Ways -Python-Leetcode

    91. Decode Ways A message containing letters from A-Z is ...

  • 91. Decode Ways

    https://leetcode.com/problems/decode-ways/description/ 解题...

  • 91. Decode Ways

    题目: A message containing letters from A-Z is being encode...

  • 91. Decode Ways

  • 91. Decode Ways

    这道题和普通的DP题不太一样,用的是top-down的方法。也就是从n开始,而不是从0开始建表。注意dp[ ]的s...

  • 91. Decode Ways

    动态规划问题创建一个长度为n+1的数组来储存子问题的结果.状态转移方程:dp[i] =dp[i-1]当s[i] !...

  • 91. Decode Ways

    A message containing letters from A-Z is being encoded to...

网友评论

    本文标题:[DP]91. Decode Ways

    本文链接:https://www.haomeiwen.com/subject/nhoueqtx.html