91. Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given a non-empty string containing only digits, determine the total number of ways to decode it.
Example 1:
Input: "12"
Output: 2
Explanation: It could be decoded as "AB" (1 2) or "L" (12).
Example 2:
Input: "226"
Output: 3
Explanation: It could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).




public class Solution{
  public int numDecodings(String s){
    if(s == null || s.length() == 0){
      return 0;
    }
    
    int n = s.length();
    int[] dp = new int[n+1];
    dp[0] = 1;
    if(s.charAt(0) != '0'){
      dp[1] = 1;
    }else{
      dp[1] = 0;
    }
    
    for(int i = 2; i <= n; i++){
      int first = Integer.valueOf(s.substring(i-1, i));
      int second = Integer.valueOf(s.substring(i-2, i));
      if(first >= 1 && first <= 9){
        dp[i] += dp[i-1];
      }
      if(second >= 10 && second <= 26){
        dp[i] += dp[i-2];
      }
    }
    return dp[n];
  }
}













打出所有可能性 

wyt211 发表于 2018-10-11 10:31
想问下decode ways打印所有结果那道题,lz是用tree做的嘛? 想问问思路

backtracking做的

对了, 打印所有结果面试官还有让优化, 用的滚动数组


chaseqi 发表于 2018-10-15 10:38. more info on 1point3acres
请问下楼主 用backtracking的时候怎么用 滚动数组优化呀?滚动数组不是一般是DP的时候用的?

我就是一位一位看, 没看一位把结果存到list里, 下一位之依赖之前一位那个list, 优化就是弄两个list就行了.
好像不应该叫滚动数组, 叫滚动list? 你懂的

 

posted on 2018-11-06 07:39  猪猪&#128055;  阅读(144)  评论(0)    收藏  举报

导航