91. Decode Ways

作者: 沉睡至夏 | 来源:发表于2016-12-23 04:45 被阅读3次

    这道题和普通的DP题不太一样,用的是top-down的方法。
    也就是从n开始,而不是从0开始建表。
    注意dp[ ]的size,比string s多1。
    base case :dp[n] = 1; dp[n-1] = 0 or 1;
    时间O(n),空间也是O(n);

    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[n] = 1;
            dp[n-1] = s.charAt(n-1)=='0'? 0:1;
            
            for(int i=n-2; i>=0; i--) {
                if(s.charAt(i) != '0')
                    dp[i] = (Integer.parseInt(s.substring(i,i+2)) <= 26) ? dp[i+1] + dp[i+2] : dp[i+1];
            }
            return dp[0];
        }
    }
    

    相关文章

      网友评论

        本文标题:91. Decode Ways

        本文链接:https://www.haomeiwen.com/subject/aozhvttx.html