题解 | #把数字翻译成字符串# 注释明了,思路清晰

把数字翻译成字符串

https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668

class Solution:
    def solve(self , nums: str) -> int:
        l = len(nums)
        dp = [1 for _ in range(l+1)]
        for i in range(1, l+1):
            if i == 1:
                # 如果第一个数字是0,不存在可行的翻译
                if nums[i-1] == '0':
                    return 0
            else:
                # 任何一个’0‘,都依赖于其前面一个数字,先讨论当前数字为0的情况
                if nums[i-1] == '0':
                    # 如果当前0不能和前一个数字组合
                    if (int(nums[i-2]) > 2 or nums[i-2] == '0'):
                        return 0
                    # 当前0和前一个数字组合
                    else:
                        dp[i] = dp[i-2]
                # 再讨论当前数字不为0的情况
                else:
                    # 如果当前数字不能和前一个数字组合
                    if nums[i-2] == '0' or int(nums[i-2]+nums[i-1]) > 26:
                        dp[i] = dp[i-1]
                    # 当前数字和前一个数字组合或者不组合
                    else:
                        dp[i] = dp[i-2] + dp[i-1]    
        return dp[-1]

全部评论
很理想的代码了
点赞 回复 分享
发布于 2023-06-25 15:32 贵州

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
kyw_:接好运
点赞 评论 收藏
分享
评论
5
2
分享
牛客网
牛客企业服务