【LeetCode】91. Decode Ways 解题报告(Python)
【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]
参考资料:
- 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)相关推荐
- 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways
LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...
- [LeetCode]91.Decode Ways
题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...
- LeetCode 91. Decode Ways
问题链接 LeetCode 91 题目解析 A~Z对应数字1~26,给出一段数字串,求破译方法数. 解题思路 动态规划.关键在于分类,定义 \(dp[i]\) 为前i个字符的解密方法数,初始化为0. ...
- LeetCode 91 Decode Ways(编码方式)(*)
原文 A message containing letters from A-Z is being encoded to numbers the following mapping: 'A' -> ...
- leetcode 91. Decode Ways | 91. 解码方法(动态规划)
题目 https://leetcode.com/problems/decode-ways/ 题解 dp 问题,首先用模拟的办法试一下,理清楚状态转移关系. 当走到 i 位置时,i 有两种选择: i 不 ...
- [dp] LeetCode 91. Decode Ways
输入:一个字符串,只包含0-9的字符. 输出:解码种类 规则:有一种信息映射规则 A->1,B->2-Z->26. 例如输入'1',只能解码为A. 输入'12',可以解码为'AB', ...
- 【重点!DP】LeetCode 639. Decode Ways II
LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...
- 91 Decode Ways
91 Decode Ways dp解法 O(1) space class Solution:# @param {string} s# @return {integer}def numDecodings ...
- 91 Decode Ways
为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的.这题就是如此. 还要注意,java && 的优先级高于||的优先级,而不是同级. pu ...
最新文章
- 三十一、二叉排序树的创建、删除和遍历
- 7.16 T1 礼物
- pytorch 笔记:手动实现AR (auto regressive)
- 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)
- Axure external link打开原理
- ipvs,ipvsadm的安装及使用
- 你的企业离DevOps转型成功,就差这“七步法”路线图
- bat批处理文件的简单解密方法(乱码)
- 微软云加速器助edoc2入云腾飞
- JVM 字节码 栈图(Stack Map Table) 学习笔记
- 小学计算机老师实习报告,精选信息技术教师实习报告3篇
- UE4插件共享汇总大全
- python alpha通道_去除图像中的alpha通道或透明度
- 假币问题python
- ABAP ALV(LVC)下拉框或者F4搜索帮助
- RK3399平台开发系列讲解(SPI子系统)4.36、SPI子系统驱动框架详解
- 更密集服务器的电源解决方案
- switch case语句用法详解
- 使用nLite封装2003集成Raid卡驱动
- 1_3.数据交换技术*
热门文章
- 27道Redis精选面试题,你会做几题?
- 打磨机器人最重要的部件—柔性力控打磨工具
- Solidworks使用问题
- python打开文件写文件乱码_Python读写文件乱码问题
- Mac window文件文本内容乱码问题
- iTween研究院之学习笔记Move移动篇
- 中南民族大学计算机基础教材,中南民族大学大学计算机基础上机题库及答案.docx...
- fbx文件导入html,AE插件:导入三维文件FBX格式包括摄像机到AE颠覆性插件FBX to AE...
- 商城小程序的五大推广引流方式
- 电话主叫号码信息的识别及实现CID