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

把数字翻译成字符串

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

// 动态规划
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    int solve(string nums) {
        // write code here
        int len = nums.size();
        vector<int> dp(len,0);

        for(int i=0; i<len; ++i)
        {
            if(i==0)
            {
                if(nums[i]=='0')
                    return 0;
                else
                    dp[i]=1;
            }
            else
            {
                // 看看[i-1,i]组成的二位数
                int t_num = stoi(nums.substr(i-1,2));  

                // nums无法译码的情况
                if(t_num==0 ||(nums[i]=='0'&&(t_num!=10 && t_num!=20)))
                    return 0;
                
                // 特殊情况
                if(t_num==10 || t_num==20)
                {
                    if(i==1)
                        dp[i]=1;
                    else
                        dp[i] = dp[i-2];
                }
                // 有两种译码方式
                else if(t_num>10 && t_num<27)
                {
                    if(i==1)
                        dp[i] = 2;
                    else
                        dp[i] = dp[i-1]+dp[i-2];
                }
                // 只有一种译码方式
                else
                {
                    dp[i] = dp[i-1];
                }
            }
        }

        return dp[len-1];
    }
};

虚数五行区解题中心 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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