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

把数字翻译成字符串

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

class Solution {
public:
    /**
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
  
    //从左到右的试法
    //nums[index..]的转换方法数
    //可变参数index
//     int process(string nums,int index){
//         if(index==nums.length())
//             return 1;
//         if(nums[index]=='0')
//             return 0;
//         int res=process(nums, index+1);
//         if(index+1<nums.length()&&((nums[index]-'0')*10+nums[index+1]-'0'<27)){
//             res+=process(nums, index+2);
//         }
//         return res;
//     }
    
    
    int solve(string nums) {
        // write code here
        if(nums==""||(nums.length()==1&&nums[0]=='0'))
            return 0;
        if(nums.length()==1)
            return 1;
        //首先需要一个长度为nums.lenth()+1的dp数组
        int dp[nums.length()+1];
        //根据base case 最后一个位置的值为1
        dp[nums.length()]=1;
        //对于一个普遍位置,他需要后面一个或两个的值
        //所以需要从后往前遍历dp数组
        for(int i=nums.length()-1;i>=0;i--){
            if(nums[i]=='0'){
                dp[i]=0;
                continue;
            }
            dp[i]=dp[i+1];
            if(i+1<nums.length()&&((nums[i]-'0')*10+nums[i+1]-'0'<27)){
                dp[i]+=dp[i+2];
            }
        }
        return dp[0];
    }
};
全部评论
根据暴力尝试改出动态规划,主要是我自己看的,大家看不惯的话直接划走orz
点赞 回复 分享
发布于 2022-05-03 17:40

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
可可可可可_:nb啊,看样子是专科玩了几年随便专升本了个民办,又玩了两年。你这能找到我吃
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务