91. Decode Ways
来源:互联网 发布:在线网络北京时间 编辑:程序博客网 时间:2024/05/01 23:11
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.
DP思路,dp[i]与dp[i-1],dp[i-2]都有关系,参考http://www.cnblogs.com/ganganloveu/p/3739606.html
public class Solution { public int numDecodings(String s) { if("".equals(s))return 0; if("0".equals(s))return 0; if(s.length() == 1)return 1; if(s.charAt(0) == '0')return 0; char[] cs = s.toCharArray(); int[] dp = new int[s.length() + 1]; dp[0] = 1;dp[1] = 1; for(int i=1; i<s.length(); i++) { if(cs[i-1] == '0') { if(cs[i] == '0') return 0; else dp[i+1] = dp[i]; } else if(cs[i-1] == '1') { if(cs[i] == '0') dp[i+1] = dp[i-1]; else dp[i+1] = dp[i] + dp[i-1]; // 因为cs[i-1]!=0,所以一定可以单枪匹马match } else if(cs[i-1] == '2') { if(cs[i] == '0') dp[i+1] = dp[i-1]; else if(cs[i]>='1' && cs[i]<='6') dp[i+1] = dp[i] + dp[i-1]; else dp[i+1] = dp[i]; } else { if(cs[i] == '0') return 0; else dp[i+1] = dp[i]; } } return dp[s.length()]; }}
0 0
- 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
- 设计模式随笔-迭代器与组合模式
- 程序员日常小工具集棉
- 清华EMBA课程系列思考之十四 -- 战略管理
- web 监听器
- The first record of a career
- 91. Decode Ways
- strus2超简单实例
- selenium:7.一个超级简单的多线程程序
- tramp的一般用法
- hadoop集群搭建
- 搭建ELK日志系统
- Emacs中那些不常用的行操作命令
- Java遍历一个目录下的所有文件
- Spring学习历程---使用注解配置或XML配置声明式事务