91. Decode Ways(解码方式)
来源:互联网 发布:mysql 定位慢查询 编辑:程序博客网 时间:2024/06/08 19:37
91. Decode Ways(解码方式)
- Decode Ways解码方式
- 题目链接
- 题目描述
- 题目分析
- 方法动态规划
- 算法描述
- 方法动态规划
- 参考代码
题目链接
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’ -> 26Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message"12"
, it could be decoded as"AB"
(1 2) or"L"
(12).
The number of ways decoding"12"
is 2.
题目分析
这道题大体思路很简单,主要问题是0
的处理:
对于s
中的第i
个字符s[i]
,若s[i]
不是0
,那么s[i]
可以作为一个单独的符号解码;若s[i]
是0
,那么s[i]
必须和s[i-1]
组合起来解码。
如果s[i-1]
和s[i]
组合起来属于[10, 26]
,那么可以作为2位数解码, 反之不能。
方法:动态规划
算法描述
遍历s
,对s[i]
:
s[i] = 0 && 10 <= s[i-1]s[i] <= 26: n[i] = n[i - 2]
1 <= s[i] <= 9 && 10 <= s[i-1]s[i] <= 26: n[i] = n[i - 1] + n[i - 2]
1 <= s[i] <= 9 && !(10 <= s[i-1]s[i] <= 26): n[i] = n[i - 1]
其他情况说明不能解码,直接返回0
参考代码
class Solution {public: int numDecodings(string s) { if (s.empty()) return 0; vector<int> n(s.size() + 1, 1); if (s[0] != '0') n[1] = 1; else return 0; for (int i = 2; i < s.size() + 1; i++) { if (s[i - 1] != '0') { n[i] = n[i - 1]; if ((s[i - 2] - '0') * 10 + s[i - 1] - '0' <= 26 && s[i - 2] != '0') n[i] += + n[i - 2]; } else if (s[i - 2] == '0') { return 0; } else { if ((s[i - 2] - '0') * 10 + s[i - 1] - '0' <= 26) n[i] = n[i - 2]; else return 0; } } return n[s.size()]; }};
- 91. Decode Ways(解码方式)
- 【Leetcode】Decode Ways 解码方式
- LeetCode 91. Decode Ways(解码方法)
- LeetCode 91. Decode Ways(解码方法)
- leetCode 91.Decode Ways (解码方式) 解题思路和方法
- LeetCode OJ 之 Decode Ways (解码方式)
- 91. Decode Ways 解码方法
- LeetCode--Decode Ways(解码方式)Python
- Decode Ways(如何解码) 【leetcode】
- 解码方法数 Decode Ways
- lintcode decode-ways 解码方法
- LeetCode | Decode Ways(译码方式)
- 91. Decode Ways(重要)
- 91. Decode Ways(unsolved)
- 91. Decode Ways (dp)
- 512.Decode Ways-解码方法(中等题)
- Leetcode 91. Decode Ways&&639.Decode ways
- Decode Ways 编码的方式
- Web Developer's Reference Guide.pdf 英文原版 免费下载
- django-2-模型
- VMware+ContOS7.x桥接网络配置
- 2017-08-22-dom4j启动报错Premature end of file.
- NWdotjs Essentials.pdf 英文原版 免费下载
- 91. Decode Ways(解码方式)
- Electron From Beginner to Pro.pdf 英文原版 免费下载
- 熔断器 Hystrix 源码解析 —— 执行结果缓存
- 第十二周
- jython未能封装jar包的原因
- C语言基础练习(三)
- 在EPS开发中遵循ISO 26262标准
- Python Game Programming By Example.pdf 英文原版 免费下载
- tensorflow实现word2vec