class Solution:
# @param s, a string
# @return an integer
def numDecodings(self, s):
n = len(s)
if n == 0: return 0
if n == 1:
if '1' <= s[0] <= '9': return 1
else: return 0
dp = [0] * n
dp[0] = 1 if '1' <= s[0] <= '9' else 0
if '1' <= s[1] <= '9':
dp[1] = dp[0]
if 10 <= int(s[0:2]) <= 26:
dp[1] += 1
for i in range(2, n):
if '1' <= s[i] <= '9':
dp[i] = dp[i - 1]
if 10 <= int(s[i-1:i+1]) <= 26:
dp[i] += dp[i - 2]
return dp[n - 1]