美文网首页
91. Decode Ways

91. Decode Ways

作者: 阿呆酱的算法工程师之路 | 来源:发表于2018-03-15 19:53 被阅读13次

题目:

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.

Solution:

class Solution {
    String s;
    public int numDecodings(String s) {
        this.s = s;
        if(s == null || s.length() == 0) {
            return 0;
        }
        int n = s.length();
        int[] f = new int[n];
        if(s.charAt(0) != '0') {
            f[0] = 1;
        } else {
            f[0] = 0;
            return 0;
        }
        if(s.length() == 1) {
            return f[0];
        }
        for(int i = 1; i < n; i++) {
            int a = single(i);
            int b = isOrNo(i - 1, i);
            if(i >= 2) {
                f[i] = f[i - 1] * a + f[i - 2] * b;
            } else {
                f[i] = f[i - 1] * a + b;
            }
            if(a == 0 && b == 0) {
                return 0;
            }
        }
        return f[n - 1];
    }
    private int single(int i) {
        if(s.charAt(i) != '0') {
            return 1;
        } else {
            return 0;
        }
    }
    
    private int isOrNo(int l, int r) {
        int nl = s.charAt(l) - '0';
        int nr = s.charAt(r) - '0';
        int sum = nl * 10 + nr;
        if(nl == 0) {
            return 0;
        }
        if(sum <= 26 && sum >= 1) {
            return 1;
        } else {
            return 0;
        }
    }
}

相关文章

  • 91. Decode Ways

    91. Decode Ways 题目:https://leetcode.com/problems/decode-w...

  • LeetCode 91-95

    91. Decode Ways[https://leetcode-cn.com/problems/decode-w...

  • 91. Decode Ways -Python-Leetcode

    91. Decode Ways A message containing letters from A-Z is ...

  • 91. Decode Ways

    https://leetcode.com/problems/decode-ways/description/ 解题...

  • 91. Decode Ways

    题目: A message containing letters from A-Z is being encode...

  • 91. Decode Ways

  • 91. Decode Ways

    这道题和普通的DP题不太一样,用的是top-down的方法。也就是从n开始,而不是从0开始建表。注意dp[ ]的s...

  • 91. Decode Ways

    动态规划问题创建一个长度为n+1的数组来储存子问题的结果.状态转移方程:dp[i] =dp[i-1]当s[i] !...

  • 91. Decode Ways

    A message containing letters from A-Z is being encoded to...

  • 91. Decode Ways

    为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的。这题就是如此。 ...

网友评论

      本文标题:91. Decode Ways

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