1def num_decodings(s):
2 if not s or s[0] == '0':
3 return 0
4 dp = [0] * (len(s) + 1)
5 dp[0] = dp[1] = 1
6 for i in range(2, len(s) + 1):
7 if s[i - 1] != '0':
8 dp[i] += dp[i - 1]
9 if 10 <= int(s[i - 2:i]) <= 26:
10 dp[i] += dp[i - 2]
11 return dp[-1]