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

把数字翻译成字符串

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

#include <string>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    int solve(string nums) {
        // write code here
        // 采用动态规划解决
        int n = nums.size();
        vector<int> dp(n + 1,
                       1); //表示以第i个字符结尾可能的编码结果种数
        if (nums[0] - '0' != 0 ) {
            dp[1] = 1;
        } else {
            dp[1] = 0;
        }
        for (int i = 2; i <= n; i++) {
            if (nums[i - 1] -'0'== 0) {
                //那就说明只能是取2个;
                if (nums[i - 2] - '1' == 0 || nums[i - 2] - '2' == 0) {
                    dp[i] = dp[i - 2];
                } else {
                    dp[i] = 0;
                }
            } else {
                int tem = stoi(nums.substr(i-2,2));
                if(tem >= 10 && tem<=26)
                {
                    dp[i] = dp[i - 1] + dp[i - 2];
                }
                else {
                    dp[i] = dp[i - 1];
                }
            }
        }
        return dp[n];

    }
};

动态规划

全部评论

相关推荐

曲霜晨:娱乐至上的年代
点赞 评论 收藏
分享
牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
mama3925:建议专业技能里测试移到最上面,加粗。然后适当加入些自动化测试工具。第二个项目,第三条亮点最后错别字。然后佬如果对自己很自信的话,可以项目放前面,然后项目里可以编造点测试经历,写在写在项目亮点的前两行。最后可加个自我评价,放个博客或者仓库链接
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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