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