Leetcode Decode Ways
2015-11-14 04:37
399 查看
A message containing letters from
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message
The number of ways decoding
判断dp[i-1] , dp[i-2] 是否有效
recurrence formula: dp[i] += dp[i-1] if(s(i-1, i) is valid (1-9)) + dp[i-2] (if s(i-2, i)) is valid( 10-26))
base case: dp[0] =1, dp[1] = 1(s(0) is valid) or 0 (s(0) is not valid)
Java code:
Reference:
1. http://www.programcreek.com/2014/06/leetcode-decode-ways-java/
2. http://www.cnblogs.com/springfor/p/3896162.html
A-Zis 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.
解题思路:
典型的dynamic programming判断dp[i-1] , dp[i-2] 是否有效
recurrence formula: dp[i] += dp[i-1] if(s(i-1, i) is valid (1-9)) + dp[i-2] (if s(i-2, i)) is valid( 10-26))
base case: dp[0] =1, dp[1] = 1(s(0) is valid) or 0 (s(0) is not valid)
Java code:
public class Solution { public int numDecodings(String s) { if(s == null || s.length() == 0 || s.equals("0")){ return 0; } int[] dp = new int[s.length()+1]; //base case: dp[0] dp[1] dp[0] = 1; if(isValid(s.substring(0,1))){ dp[1] = 1; }else { dp[1] = 0; } for(int i = 2; i<= s.length(); i++){ if(isValid(s.substring(i-1, i))){ dp[i] += dp[i-1]; } if(isValid(s.substring(i-2,i))){ dp[i] += dp[i-2]; } } return dp[s.length()]; } public boolean isValid(String s){ if(s.charAt(0) == '0') { return false; } int value = Integer.parseInt(s); // Integer.parseInt: translate string to int return value >=1 && value <= 26; } }
Reference:
1. http://www.programcreek.com/2014/06/leetcode-decode-ways-java/
2. http://www.cnblogs.com/springfor/p/3896162.html
相关文章推荐
- 深入剖析 linux GCC 4.4 的 STL string
- 海洋环流的特征
- 一看就明白的爬虫入门讲解:基础理论篇
- 欢迎使用CSDN-markdown编辑器
- label 设置行间距 字间距
- Frobenius product
- Openresty + MySQL + Redis 安装篇
- Leetcode Range Sum Query 2D - Immutable
- 教师报课系统测试
- Struts2 防止重复提交
- cryengine3视频教程 CE3 cryengine3中文视频教学
- unigine源代码源码下载 unigine2013游戏引擎源码
- RTTI简介
- RTTI简介
- Lesson 29 SVD decomposition
- [iOS] 建立与使用Framework
- 复数类完整实现 + 四则运算符重载
- C#流言终结者1(当初入门时的一些小实验)
- NYOJ 27 水池数目(dfs)
- 动态类型Dynamic