剑指 Offer 46. 把数字翻译成字符串
题目:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。 中等
请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
方法:动态规划 时间复杂度O(n) 空间复杂度O(1)

比对字符
def translateNum(self, num): """ :type num: int :rtype: int """ a = b = 1 s = str(num) for i in range(2,len(s)+1): a,b = (a + b if '10' <= s[i-2:i] <= '25' else a),a return a
该题从前到后和从后往前结果一样,故取余法节省空间
def translateNum(num): """ :type num: int :rtype: int """ a,b = 1,1 y = num % 10 while num: num //= 10 x = num % 10 a,b = a + b if 10 <= x*10 + y <= 25 else a,a y = x return a

浙公网安备 33010602011771号