Decode Ways
Count how many ways a digit string can map to letters (A=1..Z=26). Each position can be decoded alone (if 1-9) or combined with the previous digit (if 10-26) — a Fibonacci-shaped recurrence with validity checks.
- Category
- Dynamic Programming
- Time complexity
- O(n)
- Space complexity
- O(n)
Pseudocode
dp[0] = 1, dp[1] = 1 if s[0]≠0 dp[i] += dp[i−1] if s[i−1] is 1-9 dp[i] += dp[i−2] if s[i-2..i] is 10-26 answer at dp[n]
Reference implementation
dp = [1] * 2
for i in range(2, n + 1):
ways = 0
if s[i-1] != '0': ways += dp[i-1]
if 10 <= int(s[i-2:i]) <= 26: ways += dp[i-2]
dp.append(ways)