2021-03-14 动态规划 46. 把数字翻译成字符串

image.png

image.png

当后两位不能一起翻译时,最后一位只能自己翻译,因此最后一位只有一种翻译方法
当两位可以一起翻译的时候,最后一位可以自己翻译,也可以和上一位一起
一旦前面的i-1或者i-2位确定了后面也确定了,因此不是+1

字符串遍历

image.png
class Solution:
    def translateNum(self, num: int) -> int:
        s = str(num)
        a = b = 1
        for i in range(2, len(s) + 1):
            a, b = (a + b if "10" <= s[i - 2:i] <= "25" else a), a
        return a

数字求余

避免使用数字转字符串占用O(n)空间
直接使用Num进行运算

  1. 使用取余%和取整//运算 不断得到最后一位和倒数第二位
  2. 从尾部前溯和从头部开始是对称的 过程相同
class Solution:
    def translateNum(self, num: int) -> int:
        a = b = 1
        y = num % 10 #获取最后一位
        while num > 9:
            num //= 10 # 去除最后一位
            x = num % 10 #或许去除最后一位后的新的最后一位即倒数第二位
            a, b = (a + b if 10 <= 10 * x + y <= 25 else a), a
            y = x
        return a
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容