【LeetCode】91. Decode Ways 解题报告(Python)

标签(空格分隔): LeetCode

作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://leetcode.com/problems/decode-ways/description/

题目描述:

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。

令, dp[i]代表解析s[:i]字符串所有可能的方式数目。

则:

dp[i] = dp[i-1] if s[i] != '0'+ dp[i-2] if '9' < s[i-2:i] < '27'

举例子:

对于”226”:

令dp数组为[0,0,0,0],初始化为[1,0,0,0];

从第一个位置开始,输入为”2”,不为”0”,所以dp数组为[1,1,0,0];

第2个位置,输入为”2”,不为”0”,所以dp数组为[1,1,1,0];此时前两位数字是”22”,满足区间,所以变为[1,1,2,0];

第3个位置,输入为”6”,不为”0”,所以dp数组为[1,1,2,2];此时前两位数字是”26”,满足区间,所以变为[1,1,2,3]。

代码如下:

class Solution(object):def numDecodings(self, s):""":type s: str:rtype: int"""dp = [0] * (len(s) + 1)dp[0] = 1for i in range(1, len(dp)):if s[i-1] != '0':dp[i] = dp[i-1]if i != 1 and '09' < s[i-2:i] < '27':dp[i] += dp[i-2]return dp[-1]

参考资料:

  1. https://leetcode.com/problems/decode-ways/discuss/163707/Python-From-O(N)-Space-To-O(1)-Space-Solutions

日期

2018 年 8 月 27 日 ———— 就要开学了!

【LeetCode】91. Decode Ways 解题报告(Python)相关推荐

  1. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

    LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...

  2. [LeetCode]91.Decode Ways

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

  3. LeetCode 91. Decode Ways

    问题链接 LeetCode 91 题目解析 A~Z对应数字1~26,给出一段数字串,求破译方法数. 解题思路 动态规划.关键在于分类,定义 \(dp[i]\) 为前i个字符的解密方法数,初始化为0. ...

  4. LeetCode 91 Decode Ways(编码方式)(*)

    原文 A message containing letters from A-Z is being encoded to numbers the following mapping: 'A' -> ...

  5. leetcode 91. Decode Ways | 91. 解码方法(动态规划)

    题目 https://leetcode.com/problems/decode-ways/ 题解 dp 问题,首先用模拟的办法试一下,理清楚状态转移关系. 当走到 i 位置时,i 有两种选择: i 不 ...

  6. [dp] LeetCode 91. Decode Ways

    输入:一个字符串,只包含0-9的字符. 输出:解码种类 规则:有一种信息映射规则 A->1,B->2-Z->26. 例如输入'1',只能解码为A. 输入'12',可以解码为'AB', ...

  7. 【重点!DP】LeetCode 639. Decode Ways II

    LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...

  8. 91 Decode Ways

    91 Decode Ways dp解法 O(1) space class Solution:# @param {string} s# @return {integer}def numDecodings ...

  9. 91 Decode Ways

    为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的.这题就是如此. 还要注意,java && 的优先级高于||的优先级,而不是同级. pu ...

最新文章

  1. 三十一、二叉排序树的创建、删除和遍历
  2. 7.16 T1 礼物
  3. pytorch 笔记:手动实现AR (auto regressive)
  4. 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)
  5. Axure external link打开原理
  6. ipvs,ipvsadm的安装及使用
  7. 你的企业离DevOps转型成功,就差这“七步法”路线图
  8. bat批处理文件的简单解密方法(乱码)
  9. 微软云加速器助edoc2入云腾飞
  10. JVM 字节码 栈图(Stack Map Table) 学习笔记
  11. 小学计算机老师实习报告,精选信息技术教师实习报告3篇
  12. UE4插件共享汇总大全
  13. python alpha通道_去除图像中的alpha通道或透明度
  14. 假币问题python
  15. ABAP ALV(LVC)下拉框或者F4搜索帮助
  16. RK3399平台开发系列讲解(SPI子系统)4.36、SPI子系统驱动框架详解
  17. 更密集服务器的电源解决方案
  18. switch case语句用法详解
  19. 使用nLite封装2003集成Raid卡驱动
  20. 1_3.数据交换技术*

热门文章

  1. 27道Redis精选面试题,你会做几题?
  2. 打磨机器人最重要的部件—柔性力控打磨工具
  3. Solidworks使用问题
  4. python打开文件写文件乱码_Python读写文件乱码问题
  5. Mac window文件文本内容乱码问题
  6. iTween研究院之学习笔记Move移动篇
  7. 中南民族大学计算机基础教材,中南民族大学大学计算机基础上机题库及答案.docx...
  8. fbx文件导入html,AE插件:导入三维文件FBX格式包括摄像机到AE颠覆性插件FBX to AE...
  9. 商城小程序的五大推广引流方式
  10. 电话主叫号码信息的识别及实现CID