Problem of the day
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).
Given a string ‘S’ containing only digits, return the number of ways to decode it.
Example:Input: ‘S’ = "11106"
Output: 2
The possible ways are:-
(1 1 10 6),
(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".
The first line contains ‘T’, denoting the number of test cases.
Each test case's first and only line contains the string ‘S’.
Output format :
Return the number of ways to decode the string ‘S’.
Note :
You don't need to print anything. It has already been taken care of. Just implement the given function.
1 <= T <= 10
1 <= | S | <= 100
Time Limit: 1 sec
2
12
226
2
3
For the first test case:-
"12" could be decoded as "AB" (1 2) or "L" (12).
For the second test case:-
"226" could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
2
1234
333
3
1
Think of the possible choices you might make and try to solve them with the help of recursion.
Function numDecodingsUtil( string S, int i, int N )
Function numDecodings(string S):
O(2^N), where ‘N’ is the length of the string ‘S’.
In the worst case, for each index i, we can maximum make 2 recursion calls for each i. Thus the complexity will be exponential and equal to O(2^N).
Hence, the time complexity is O(2^N).
O( N ), where ‘N’ is the length of the string ‘S’.
In the worst case, the extra space used by the recursion stack can go up to a maximum depth of ‘N’. Hence the space complexity is O(N).
Hence the space complexity is O( N ).