[letecode Java] Decode Ways
来源:互联网 发布:yy神曲下载软件 编辑:程序博客网 时间:2024/05/16 10:29
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.
一题编解码的问题,和爬楼梯很像,典型的动态规划问题,用数组来存储下标 i 对应的数量,不要用递归,一般都会超时。区别在于走两步产生“二位数”x是否可以解码,这里需要判断,如果x<27并且x>=10,则可以解码,否则不可以。(避免解码“04”之类的数)
设定一个s.length()+1的数组result[] ,从而使遍历从字符串下标1 (数组下标2)开始,相应的result[0]=1,result[1]=1。
这里,重点在于’0‘的判断,如果字符串下标(i-1)为'0',则若二位可解码,则result[i]=result[i-2];若不能(如“30”、“00”等),则break,即此字符串无法解码。如果不是’0‘,则二位可解码,result[i]=result[i-1]+result[i-2];否则result[i]=result[i-1]。
代码如下:
public class Solution {
public int numDecodings(String s) {
if(s==null||s.length()==0||s.charAt(0)=='0')
return 0;
int[] result=new int[s.length()+1];
result[0]=1;
result[1]=1;
for(int i=2;i<=s.length();i++){
if(s.charAt(i-1)=='0'){
if(decodable(s,i-2,2))
result[i]=result[i-2];
else
break;
}
else {
if(decodable(s,i-2,2))
result[i]=result[i-2]+result[i-1];
else
result[i]=result[i-1];
}
}
return result[s.length()];
}
private boolean decodable(String s,int begin,int length){
String str=s.substring(begin,begin+length);
int temp=Integer.parseInt(str);
if(temp<27&&temp>=10)
return true;
else
return false;
}
}
- [letecode Java] Decode Ways
- [Leetcode] Decode Ways (Java)
- Decode Ways (Java)
- [LeetCode][Java] Decode Ways
- decode-ways Java code
- [leetcode]91. Decode Ways(Java)
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- php学习之旅:static变量与方法
- CSS-css与html的结合方式
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- ServletContext、HttpServletRequest 、HttpServletResponse和HttpSession
- 中等难度的通讯录.字典 动态分组法
- [letecode Java] Decode Ways
- 关于OpenCV中IplImage的char类型的ImageData需要进行强制类型转换为uchar的说明
- ios 开发 OC编程 块语法bolck
- 索引(index)_普通索引、唯一索引和复合索引.索引查询
- [Python] Pandas 学习笔记(一)
- IOS开发UI篇--使用UICollectionView实现一个列表头部拉伸效果的案例
- Java核心基础知识
- mac下面删除svn帐号
- Web性能优化:What? Why? How?