Leetcode-91. Decode Ways
来源:互联网 发布:苹果音乐变音软件 编辑:程序博客网 时间:2024/06/18 01:47
前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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.
这个题目直接考虑从左往右解。通过维护一个Map来进行维护避免重复操作。Your runtime beats 28.37% of java submissions.
public class Solution { public int numDecodings(String s) { if(s.length()==0) return 0; if(s.length() == 1) if(!(s.equals("0"))) return 1; else return 0; if(s.charAt(0) == '0') return 0; Map<Integer,Integer> i2results = new HashMap<Integer,Integer>(); return generateSubString(s,0,s.length() - 1,i2results); } public int generateSubString(String s, int i,int end,Map<Integer,Integer> i2results){ if (i2results.containsKey(i)) return i2results.get(i); if(i == end )if(s.charAt(i) != '0') return 1; else return 0; if(i == end - 1){ if(s.charAt(i) - '0' > 2) return generateSubString(s,i+1,end,i2results); if(s.charAt(i) == '2'){ if(s.charAt(i+1) - '0' >= 7) return 1; if(s.charAt(i+1) == '0') return 1; return 2; } if(s.charAt(i) == '1'){ if(s.charAt(i+1) - '0' != 0) return 2; if(s.charAt(i+1) == '0') return 1; } if (s.charAt(i) == '0') return 0; }else{ int results = 0; if(s.charAt(i) - '0' > 2) results += generateSubString(s,i+1,end,i2results); if(s.charAt(i) == '2'){ if(s.charAt(i+1) - '0' >= 7) results += generateSubString(s,i+1,end,i2results); else if(s.charAt(i+1) == '0') results += generateSubString(s,i+2,end,i2results); else { results += generateSubString(s,i+1,end,i2results); results += generateSubString(s,i+2,end,i2results); } } if(s.charAt(i) == '1'){ if(s.charAt(i+1) - '0' != 0) { results += generateSubString(s,i+1,end,i2results); results += generateSubString(s,i+2,end,i2results); } if(s.charAt(i+1) == '0') results += generateSubString(s,i+2,end,i2results); } if (s.charAt(i) == '0') return 0; i2results.put(i,results); return results; } return 0; }}
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
- [leetcode] 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode 91. Decode Ways
- LeetCode *** 91. Decode Ways
- Leetcode:91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode-91.Decode Ways
- LeetCode 91. Decode Ways
- leetcode.91. Decode Ways
- [leetcode]91. Decode Ways
- ListView 优化
- Mac SecureCRT 8.0.2破解
- 移动端开发基本知识之touch.js,FastClick.js源码分析
- Android开发之内存优化问题
- C++ 中的位操作
- Leetcode-91. Decode Ways
- Android 多窗口
- LINUX linux下的时间函数 我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的
- SDNU 1093.DNA排序 稳定排序(基数排序)
- 使用Gradle管理你的Android Studio工程
- android实现全屏
- Java关于中质数
- app由于未按照iCoud数据储存的准则被拒解决办法
- NetStat应用详解