91. Decode Ways
2016-09-18 04:32
176 查看
DP[0]DP[1]几乎花了2/3的时间来考虑各种CASE,还是没考虑全,这个题思路不难,但是做对很难。。。
dp[i] 就是 0-i的所有可能性。
对于s.charAt(i)来说:
要么他自己作为一个数字,可以是1-9,此时dp[i]和dp[i-1]一样。是0的话就不行。。
要么他和前一位组成两位数,10-26,此时dp[i] 和 dp[i-2]一样,因为他把s.charAt(i-1)抢走了和自己抱团取暖了。
所以最终dp[i]的可能性就是上面所属的2种情况相加。
不会出现,一个数既要和前面组成,又要和后面组成。
继续刚才的步骤,用dp[i+1]来说,假如i+1要拿走i来和自己抱团取暖,那dp[i+1]是要加上dp[i-1],而dp[i-1]的所有可能性中,没有i和i-1抱团取暖的组合所以不影响..
这东西理解起来比叙述起来容易些。
然后最讨厌的是前两位数字,分成好几种可能:
首位是0,不行。
组成10或者20,dp[1] = 1。
30,40,50,60,70,80,90,也不行。。
11-19,21-26,dp[1] = 2。
其余,dp[1] = 1
不太容易想全,基本是提交之后才能发现错误。。
dp[i] 就是 0-i的所有可能性。
对于s.charAt(i)来说:
要么他自己作为一个数字,可以是1-9,此时dp[i]和dp[i-1]一样。是0的话就不行。。
要么他和前一位组成两位数,10-26,此时dp[i] 和 dp[i-2]一样,因为他把s.charAt(i-1)抢走了和自己抱团取暖了。
所以最终dp[i]的可能性就是上面所属的2种情况相加。
不会出现,一个数既要和前面组成,又要和后面组成。
继续刚才的步骤,用dp[i+1]来说,假如i+1要拿走i来和自己抱团取暖,那dp[i+1]是要加上dp[i-1],而dp[i-1]的所有可能性中,没有i和i-1抱团取暖的组合所以不影响..
这东西理解起来比叙述起来容易些。
然后最讨厌的是前两位数字,分成好几种可能:
首位是0,不行。
组成10或者20,dp[1] = 1。
30,40,50,60,70,80,90,也不行。。
11-19,21-26,dp[1] = 2。
其余,dp[1] = 1
不太容易想全,基本是提交之后才能发现错误。。
public class Solution { public int numDecodings(String s) { if(s.length() == 0) return 0; if(s.charAt(0) == '0') return 0; if(s.length() == 1) return 1; int[] dp = new int[s.length()]; dp[0] = 1; int temp = Integer.valueOf(s.substring(0,2)); if(s.charAt(1) == '0') { if(temp == 10 || temp == 20) dp[1] = 1; else return 0; } else if(temp <= 26) dp[1] = 2; else dp[1] = 1; for(int i = 2; i < s.length(); i++) { char tempC = s.charAt(i); char prevC = s.charAt(i-1); dp[i] = tempC == '0'? 0:dp[i-1]; if(prevC != '0' && Integer.valueOf(s.substring(i-1,i+1)) <= 26) { dp[i] += dp[i-2]; } } return dp[dp.length-1]; } }
相关文章推荐
- [Leetcode] 91. Decode Ways
- 91. Decode Ways
- 91. Decode Ways
- 91. Decode Ways
- leetcode-91. Decode Ways
- Leetcode 91. Decode Ways JAVA语言
- 91. Decode Ways
- Leetcode 91. Decode Ways 解码方法(动态规划,字符串处理)
- Leetcode 91. Decode Ways
- LeetCode *** 91. Decode Ways
- 91. Decode Ways 数字转字母的不同编码方式
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- [leetcode]91. Decode Ways
- [Leetcode]@python 91. Decode Ways
- LeetCode 91. Decode Ways
- 91. Decode Ways
- 【算法分析与设计】【第九周】91. Decode Ways
- 91. Decode Ways
- LeetCode 91. Decode Ways