# coding: utf-8 class Solution: # @param {string} s a string, encoded message # @return {int} an integer, the number of ways decoding def numDecodings(self, s): # Write your code here ''' ä»åå¾åæ¾ï¼å¯¹äºç¬¬iä½çæ åµï¼ 1. çäºç¬¬i + 1ä½çç»åã 2. 妿s[i][i + 1]å¨10å°26çèå´å ï¼åå ä¸ç¬¬i + 2ä½çç»åã ''' if not s: return 0 cached_nums = [1 for i in xrange(len(s) + 1)] # å¤ä¸æ ¼æ¹ä¾¿å¤çåæ°ç¬¬äºä½çæ åµ for i in xrange(len(s) - 1, -1, -1): if s[i] == '0': cached_nums[i] = 0 else: cached_nums[i] = cached_nums[i + 1] if i < len(s) - 1: if (s[i] == '1') or ((s[i] == '2') and (s[i + 1] <= '6')): cached_nums[i] += cached_nums[i + 2] return cached_nums[0] # medium: http://lintcode.com/zh-cn/problem/decode-ways/