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

把数字翻译成字符串

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];
    }
};

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

怎么绘世呢?

全部评论

相关推荐

05-30 18:54
武汉商学院 Java
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务