91. Decode Ways

  • Difficulty: Medium

  • Topics: String, Dynamic Programming

  • Similar Questions:

Problem:

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).

Solutions:

class Solution {
public:
    int numDecodings(string s) {

        int len = s.length();
        vector<int> cache(len, -1);

        return helper(s, 0, cache);
    }

    int helper(string s, int pos, vector<int>& cache) {
        if (pos > s.length())  return 0;
        if (pos == s.length())  return 1;
        if (cache[pos] != -1)   return cache[pos];

        int count = 0;

        if (s[pos] == '0')  return 0;
        count += helper(s, pos + 1, cache);
        if (pos + 1 < s.length()) {
            if (10*(s[pos] - '0') + s[pos + 1] - '0' <= 26) {
                count += helper(s, pos + 2, cache);
            }
        }

        cache[pos] = count;
        return count;
    }
};

results matching ""

    No results matching ""