解码方法数 Decode Ways
来源:互联网 发布:cad截图软件betterwmf 编辑:程序博客网 时间:2024/06/05 02:56
问题:A message containing letters from
A-Z
is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26
Given 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.
思路:解码这种尝试性的操作,递归尝试肯定会超时。肯定是动态规划方法。
状态量H[i]表示,前i个数字存在的解码方法数。
递推关系:
1、当出现0时,0必须和其左边的数结合,如果左边不是1或者2,那必定是错误的编码。
2、当出现大于26时,则必须拆开的解码。
3、当出现11~26时,则出现两种解码方法。
初始条件要符合逻辑。
class Solution {public:int numDecodings(string s) {int n = s.size();if(n == 0 || s[0] == '0')return 0;if(n == 1)return 1;int H[n+1];H[0] = 1;H[1] = 1;for(int i=2;i<=n;i++){if (s[i-1] == '0'){ if(s[i-2] < '3' && s[i-2] > '0')H[i] = H[i-2];elsereturn 0;}else if(s[i-2] == '1' || (s[i-2] == '2' && s[i-1] <= '6'))H[i] = H[i-1] + H[i-2];elseH[i] = H[i-1];}return H[n];}};
0 0
- 解码方法数 Decode Ways
- lintcode decode-ways 解码方法
- 91. Decode Ways 解码方法
- LeetCode 91. Decode Ways(解码方法)
- LeetCode 91. Decode Ways(解码方法)
- leetCode 91.Decode Ways (解码方式) 解题思路和方法
- 512.Decode Ways-解码方法(中等题)
- 【Leetcode】Decode Ways 解码方式
- Decode Ways(如何解码) 【leetcode】
- Decode Ways 不同的解码可能性
- LeetCode--Decode Ways(解码方式)Python
- 91. Decode Ways(解码方式)
- Decode Ways 把字符串解码成数字组合@LeetCode
- LeetCode OJ 之 Decode Ways (解码方式)
- java URLEncoder.decode方法解码
- Leetcode Decode Ways 密码编码方法
- Decode Ways
- Decode Ways
- 您的品牌,让谁看见?-微营销学习笔记6:公众帐号申请
- Linux下的Nano命令
- Netbeans与Composer
- C++自己实现MD5算法
- cocos2d-x3.0rc第一次移植闪退的处理办法
- 解码方法数 Decode Ways
- Pat(Advanced Level)Practice--1032(Sharing)
- 字符串编辑距离
- Morton码反算行列号
- 【计组】 练习题
- 日期 时间 模板
- Nyoj 171 聪明的kk
- java不同的方法读取文件
- 关于vs调试的时候仍然可以修改源代码