classSolution: deftranslateNum(self, num: int) -> int: strs = str(num) dp = [] dp.append(1) dp.append(2if strs[:2] >= '10'and strs[:2] <= '25'else1) for i inrange(2, len(strs)): if strs[i-1:i+1] >= '10'and strs[i-1:i+1] <= '25': cur = dp[i-1] + dp[i-2] else: cur = dp[i-1] dp.append(cur) return dp[-1]
原地dp:
classSolution: deftranslateNum(self, num: int) -> int: strs = str(num) a = b = 1 for i inrange(1, len(strs)): a, b = (a + b) if'10' <= strs[i-1:i+1] <= '25'else a, a return a
classSolution: deftranslateNum(self, num: int) -> int: a = b = 1 y = num % 10 while num != 0: num //= 10 x = num % 10 a, b = (a + b) if10 <= 10*x+y <= 25else a, a y = x return a