dp解法 O(1) space
class Solution: # @param {string} s # @return {integer} def numDecodings(self, s): if s == "" or s[0] == "0": return 0 dp0, dp1 = 1, 1 for i in range(1, len(s)): if s[i] == "0": if s[i-1] == "0" or s[i-1] >= '3': return 0 else: dp0, dp1 = dp1, dp0 else: if '10' < s[i-1: i+1] < '27': dp0, dp1 = dp1, dp0 + dp1 else: dp0 = dp1 return dp1