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

把数字翻译成字符串

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

class Solution {
public:
    /**
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    int solve(string nums) {
        // write code here
        int n = nums.length();
        if(n == 1){
            if(nums == "0"){
                return 0;
            }
            return 1;
        }
        vector<int> dp(n, 0);
        dp[0] = 1;
        if(nums[1] == '0'){
            dp[1] = 1;
        }
        else{
            if(check(nums.substr(0,2))){
                dp[1] = 2;
            }
            else{
                dp[1] = 1;
            }
        }
        
        for(int i=2; i<n; i++){
            if(nums[i] == '0'){
                string cur = nums.substr(i-1, 2);
                if(check(cur)){
                    dp[i] = dp[i-2];
                }
                else{
                    return 0;
                }
            }
            else{
                string cur = nums.substr(i-1, 2);
                if(check(cur)){
                    dp[i] = dp[i-1]+dp[i-2];
                }
                else{
                    dp[i] = dp[i-1];
                }
            }
        }
        return dp[n-1];
    }
    
    bool check(string s){
        int num = stoi(s);
        if(num>=10 && num<=26){
            return true;
        }
        return false;
    }
    
};
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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