本文最后更新于:2020年11月16日 下午

给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成”a”,1翻译成”b”,$\cdots$,11翻译成’l’,$\cdots$,25翻译成”z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

示例1

输入:12258
输出:5
解释:122585种不同的翻译,分别是"

提示:

  • 0 <= num < 2^31
class Solution:
	def translateNum(self, num):

image-20201116145633883

image-20201116145650078

方法一:字符串遍历

  • 为方便获取
class Solution:
    def translateNum(self, num):
        s = str(num)
        a = b = 1
        for i in range(2, len(s) + 1):
            tmp = s[i-2:i]
            c = a + b if "10" <= tmp <= "25" else a
            b = a
            a = c
       return a
class Solution:
	def translateNum(self, num):
        a = b = 1
        y = num % 10
        while num > 9:
            num // 10
            x = num % 10
            temp = 10 * x + y 
            c = a + b if 10 <= temp <= 25 else a
            a, b = c, a
            y = x
		return a

123456 7 8