- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find number of ways we can decode a message in Python
Suppose we have mapping like 'a' = 1, 'b' = 2, ... 'z' = 26, and we have an encoded message message string, we have to count the number of ways it can be decoded.
So, if the input is like message = "222", then the output will be 3, as This can be decoded 3 ways: bbb, bv, and vb.
To solve this, we will follow these steps −
memo := a list of 0s of size same as message size + 1
memo[0] := 1
memo[1] := 1 when message[0] is not same as "0" otherwise 0
for i in range 2 to size of message, do
n1 := numeric value of message[from index i-1 to i]
n2 := numeric value of message[from index i-2 to i]
n1_valid:= true when n1 > 0
n2_valid:= true when n2 > 9 and n2 < 27
if n1_valid is true, then
memo[i] := memo[i] + memo[i-1]
if n2_valid is true, then
memo[i] := memo[i] + memo[i-2]
return last element of memo
Let us see the following implementation to get better understanding −
Example
class Solution: def solve(self, message): memo = [0 for i in range(len(message)+1)] memo[0] = 1 memo[1] = 1 if message[0]!="0" else 0 for i in range(2,len(message)+1): n1 = int(message[i-1:i]) n2 = int(message[i-2:i]) n1_valid= n1>0 n2_valid= n2>9 and n2<27 if n1_valid: memo[i]+=memo[i-1] if n2_valid: memo[i]+=memo[i-2] return memo[-1] ob = Solution() message = "2223" print(ob.solve(message))
Input
"2223"
Output
5