# Decode Ways Leetcode Solution

In this post, we are going to solve the Decode Ways Leetcode Solution problem of Leetcode. This Leetcode problem is done in many programming languages like C++, Java, and Python.

## Problem

A message containing letters from `A-Z` can be encoded into numbers using the following mapping:

```'A' -> "1"
'B' -> "2"
...
'Z' -> "26"
```

To decode an encoded message, all the digits must be grouped then mapped back into letters using the reverse of the mapping above (there may be multiple ways). For example, `"11106"` can be mapped into:

• `"AAJF"` with the grouping `(1 1 10 6)`
• `"KJF"` with the grouping `(11 10 6)`

Note that the grouping `(1 11 06)` is invalid because `"06"` cannot be mapped into `'F'` since `"6"` is different from `"06"`.

Given a string `s` containing only digits, return the number of ways to decode it.

The test cases are generated so that the answer fits in a 32-bit integer.

Example 1:

```Input: s = "12"
Output: 2
Explanation: "12" could be decoded as "AB" (1 2) or "L" (12).
```

Example 2:

```Input: s = "226"
Output: 3
Explanation: "226" could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
```

Example 3:

```Input: s = "06"
Output: 0
Explanation: "06" cannot be mapped to "F" because of the leading zero ("6" is different from "06").
```

Constraints:

• `1 <= s.length <= 100`
• `s` contains only digits and may contain leading zero(s).

Now, lets see the leetcode solution of Decode Ways Leetcode Solution.

### Decode WaysLeetcode Solution in Python

```def numDecodings(s):
if not s:
return 0

dp = [0 for x in range(len(s) + 1)]

# base case initialization
dp = 1
dp = 0 if s == "0" else 1   #(1)

for i in range(2, len(s) + 1):
# One step jump
if 0 < int(s[i-1:i]) <= 9:    #(2)
dp[i] += dp[i - 1]
# Two step jump
if 10 <= int(s[i-2:i]) <= 26: #(3)
dp[i] += dp[i - 2]
return dp[len(s)]
```

### Decode Ways Leetcode Solutionin CPP

```int numDecodings(string s) {
return s.empty() ? 0: numDecodings(0,s);
}
int numDecodings(int p, string& s) {
int n = s.size();
if(p == n) return 1;
if(s[p] == '0') return 0; // sub string starting with 0 is not a valid encoding
int res = numDecodings(p+1,s);
if( p < n-1 && (s[p]=='1'|| (s[p]=='2'&& s[p+1]<'7'))) res += numDecodings(p+2,s);
return res;
}
```

### Decode Ways Leetcode Solution in Java

```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 = 1;
dp = s.charAt(0) != '0' ? 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];
}
}```

Note: This problem Decode Ways is generated by Leetcode but the solution is provided by Chase2learn This tutorial is only for Educational and Learning purposes.

Sharing Is Caring