Decode Ways LeetCode solution in Python

1
# Runtime: 48 ms (Top 59.57%) | Memory: 14.1 MB (Top 30.54%)
2
class Solution:
3
def numDecodings(self, s: str) -> int:
4
if s[0] == "0" or "00" in s:
5
return 0
6
l = len(s)
7
if l == 1:
8
return 1
9
elif l == 2:
10
if s[1] == "0":
11
if s[0] == "1" or s[0] == "2":
12
return 1
13
else:
14
return 0
15
else:
16
if int(s) <= 26:
17
return 2
18
else:
19
return 1
20
dp = [1]
21
if s[1] == "0":
22
if s[0] == "1" or s[0] == "2":
23
dp.append(1)
24
else:
25
return 0
26
else:
27
if int(s[:2]) <= 26:
28
dp.append(2)
29
else:
30
dp.append(1)
31
for i in range(2, l):
32
num = 0
33
if s[i] == "0":
34
if s[i - 1] != "1" and s[i - 1] != "2":
35
return 0
36
else:
37
num = dp[i - 2]
38
elif s[i - 1] == "1" or (s[i - 1] == "2" and int(f"{s[i-1]}{s[i]}") <= 26):
39
num = dp[i - 1] + dp[i - 2]
40
else:
41
num = dp[i - 1]
42
dp.append(num)
43
return dp[l - 1]

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0