Leetcode: Decode ways
Characters can be encoded via different numbers. A -> 1, B -> 2, ..., Z -> 26
. Given a string s
of numbers, return the number of possible decodings. For example 12
can be decoded as A,B
and as L
.
We can look at this problem as a recursive problem. By checking the first two characters of each string, we can see if we decode it in zero, one or two ways. It is impossible to decode a string if it starts in 0
, according to the rules. In this case we can return immediately and do not need to proceed further.
Next, we test if the string is at least 2
long. If this is the case we can either decode it as a single character or as two characters. The exception for two characters is that the number has to be below or equal to 26
.
Lastly, it is a good idea to add memoization to the algorithm and avoid performing the same operation twice. For example if we have a string of length 4: 1-1-1-1
, we can decode it as 11-...
or as 1-1...
. However, the number of ways the remainder can be decoded stays the same.
Runtime: 74 ms, faster than 8.01% of Python3 online submissions for Decode Ways. Memory Usage: 14.3 MB, less than 6.92% of Python3 online submissions for Decode Ways.