91. Decode Ways--leetcode
来源:互联网 发布:七彩网络 编辑:程序博客网 时间:2024/05/16 15:44
题目
‘A’ -> 1
‘B’ -> 2
‘Z’ -> 26
Given encoded message “12”, it could be decoded as “AB” (1 2) >or “L” (12).
The number of ways decoding “12” is 2.
思路:动态规划
dp[i]表示前i个数字的解码方式个数
第一次的思路
public int numDecodings(String s) { if(s.length() == 0) return 0; if(s.charAt(0) == '0') return 0; int[] dp = new int[s.length()]; dp[0] = 1; for(int i = 1; i < s.length();i++){ if(s.charAt(i) == '0'){ if(s.charAt(i-1) == '1' || s.charAt(i-1) == '2') dp[i] = dp[i-1]; else return 0; }else if(s.charAt(i) == '1' || s.charAt(i) == '2'){ if(i < s.length()-1){ if(s.charAt(i+1) == '0') dp[i] = dp[i-1]; else{ if(s.charAt(i-1) == '1' || s.charAt(i-1) == '2') dp[i] = dp[i-1] + 1; else dp[i] = dp[i-1]; } }else{ if(s.charAt(i-1) == '1' || s.charAt(i-1) == '2') dp[i] = dp[i-1] + 1; else dp[i] = dp[i-1]; } }else if(s.charAt(i) <= '6'){ if(s.charAt(i-1) == '1' || s.charAt(i-1) == '2') dp[i] = dp[i-1] + 1; else dp[i] = dp[i-1]; }else{ if(s.charAt(i-1) == '1') dp[i] = dp[i-1] + 1; else dp[i] = dp[i-1]; } } return dp[s.length()-1]; }
上述代码有错误,计算的方式不对
正确的代码:
public int numDecodings(String s) { if(s.length() == 0) return 0; if(s.charAt(0) == '0') return 0; int[] dp = new int[s.length()]; dp[0] = 1; for(int i = 1; i < s.length();i++){ if(s.charAt(i) == '0'){ if(s.charAt(i-1) == '0' || s.charAt(i-1) >= '3') return 0; else dp[i] = (i>1)?dp[i-2]:1; }else{ if(s.charAt(i-1) == '0' || s.charAt(i-1) > '2') dp[i] = dp[i-1]; else if(s.charAt(i-1) == '2' && s.charAt(i) > '6') dp[i] = dp[i-1]; else { dp[i] = (i>1)?dp[i-2]:0; dp[i] += (i>1)?dp[i-1]:(dp[i-1]+1); } } } return dp[s.length()-1]; }
思路:待补……
阅读全文
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
- getElementsByClassName兼容性处理
- 为什么有的行内元素可以设置宽高
- 常用SQL语句
- $.getJSON解决跨域问题
- mysql 入门基础
- 91. Decode Ways--leetcode
- 高并发下linux ulimit优化
- nodejs输出json
- python中pandas读取数据库
- 深度学习起步之环境配置【个人踩坑指南】(Ubuntu+Nvidia驱动+cudnn+caffe+opencv)(上)
- 十大步骤帮你有效使用预测分析算法
- 一位资深程序员大牛给予Java初学者的学习建议
- 基于c++的运算符重载(二、数组非友元)
- 启动工程报java.lang.reflect.InvocationTargetException的解决