题解 | #把数字翻译成字符串#

把数字翻译成字符串

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    int solve(string nums) {
        //排除0
        if(nums == "0") 
            return 0;
        //排除只有一种可能的10 和 20
        if(nums == "10" || nums == "20") 
            return 1;
        //当0的前面不是1或2时,无法译码,0种
        for(int i = 1; i < nums.length(); i++)
        { 
            if(nums[i] == '0')
                if(nums[i - 1] != '1' && nums[i - 1] != '2')
                    return 0;
        }
        vector<int> dp(nums.size(), 1);
        if(nums[0]=='1')
        {
            if(nums[1]>='1' && nums[1]<='9')
                dp[1]=2;
        }
        else if(nums[0]=='2')
        {
            if(nums[1]>='1' && nums[1]<='6')
                dp[1]=2;
        }

        for(int i=2; i<nums.size(); i++)
        {
            if((nums[i - 1] == '1' && nums[i] != '0') || (nums[i - 1] == '2' && nums[i] > '0' && nums[i] < '7'))
               dp[i] = dp[i - 1] + dp[i - 2];
            else
                dp[i] = dp[i - 1];
        }
        return dp[dp.size()-1];
    }
};

磨砂的指名者 文章被收录于专栏

怎么绘世呢?

全部评论

相关推荐

11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务