91. Decode Ways
来源:互联网 发布:怎么添加js 编辑:程序博客网 时间:2024/04/27 23:54
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.
http://www.cnblogs.com/lihaozy/archive/2012/12/30/2839964.html
https://segmentfault.com/a/1190000003813921
每次对于当前的字符判断是否属于1-9(0肯定不行,因为0不在1-26中),如果属于,那么当前的字符可以被decode,并且和f[n-1]组合,f[n] += f[n-1]
然后对于当前字符和前一个字符组成的字符串判断是否属于10-26,如果属于,那么这两个字符可以被decode,并且和f[n-2]组合,f[n] += f[n-2]
解码是有规律的,所以我们可以尝试动态规划。假设数组dp[i]
表示从头到字符串的第i位,一共有多少种解码方法的话,那么如果字符串的第i-1位和第i位能组成一个10到26的数字,说明我们是在第i-2位的解码方法上继续解码。如果字符串的第i-1位和第i位不能组成有效二位数字,而且第i位不是0的话,说明我们是在第i-1位的解码方法上继续解码。所以,如果两个条件都符合,则dp[i]=dp[i-1]+dp[i-2]
,否则dp[i]=dp[i-1]
。
注意
如果出现无法被两位数接纳的0,则无法解码,我们可以在一开始就判断,并将其初始化为0,这样后面的相加永远都是加0
public static int numDecodings(String s){if (s.length() == 0)return s.length();int[] dp = new int[s.length() + 1];dp[0] = 1;dp[1] = s.charAt(0) == '0' ? 0 : 1;for (int i = 2; i <= s.length(); i++){int num=Integer.parseInt(s.substring(i - 2, i));if(num>=10&&num<=26){dp[i] += dp[i - 2];}if (s.substring(i - 1, i).compareTo("0") != 0){dp[i] += dp[i - 1];}}return dp[s.length()];}
- Leetcode 91. Decode Ways&&639.Decode ways
- [Leetcode] 91. Decode Ways
- LeetCode --- 91. Decode Ways
- [LeetCode]91.Decode Ways
- [leetcode] 91.Decode Ways
- 91. Decode Ways
- Algorithms-91.Decode Ways
- [leetcode] 91. Decode Ways
- 91. Decode Ways
- Leetcode 91. Decode Ways
- 91. Decode Ways
- leetcode 91. Decode Ways
- 91. Decode Ways
- 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode 91. Decode Ways
- 91. Decode Ways
- 必选参数、默认参数、可变参数、关键字参数和命名关键字参数
- 用C语言绘制一条标准的余弦曲线
- 关于UGUI(0):写在前面
- Maven实战学习笔记 3.Maven使用入门
- Runtime
- 91. Decode Ways
- 分布式锁1 Java常用技术方案
- BZOJ 1069 [SCOI2007]最大土地面积
- 在编程语言中,想输出空格可以使用中文格式的空格,因为的不识别
- Android_GitHub_xUtils之DbUtils、ViewUtils、HttpUtils、BitmapUtils
- c++实验7--最大公约数和最小公倍数
- PHP写日志fwrite和file_put_contents的区别与性能
- 89. Gray Code
- lua入门