
dp的题目,1.确定维数, 2.dp[i]所代表的含义, 3. dp[i]和之前值的关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class (object): def numDecodings(self, s): """ :type s: str :rtype: int """ if not s: return 0 if s[0] == "0": return 0 if len(s) == 1: return 1 dp = [0 for _ in range(len(s))] dp[0] = 1 if "1" <= s[:2] <= "26" and s[1] != "0": dp[1] = 2 elif s[1] == "0" and s[0] not in "12": return 0 else: dp[1] = 1 for i in range(2, len(s)): if s[i] == "0" and s[i-1] not in "12": return 0 elif s[i] == "0": dp[i] = dp[i-2] elif "11" <= s[i-1:i+1] <= "26": dp[i] = dp[i-1] + dp[i-2] else: dp[i] = dp[i-1] return dp[-1]
|
近期评论