zoukankan      html  css  js  c++  java
  • LeetCode "Decode Ways"

    Similar with "Climb stairs" but with more restrictions.

    //    Ref: http://yucoding.blogspot.com/2013/01/leetcode-question-26-decode-ways.html
    class Solution {
    public:
        bool isValid(string s)
        {
            if (s[0] == '0') return false;
            if (s[0] > '2' || (s[0] == '2' && s[1] > '6')) return false;
            return true;
        }
        int numDecodings(string s) {
            if (s.length() == 0) return 0;
            if (s.length() == 1)
            {
                if (s[0] != '0') return 1;
                else return 0;
            }
            if (s[0] == '0') return 0;
    
            int *num = new int[s.length()];
            for (int i = 0; i < s.length(); i++)
                num[i] = 0;
    
            //    Initial
            num[0] = 1;        
            if (isValid(s.substr(0, 2)))    num[1] ++;
            if (s[0] != '0' && s[1] != '0') num[1] ++;        
    
            //    DP: num[i] = num[i-1] + num[i-2](if)
            for (int i = 2; i < s.length(); i++)
            {
                if (s[i] != '0') num[i] += num[i - 1];
                if (isValid(s.substr(i - 1, 2)))
                    num[i] += num[i - 2];
            }
    
            int ret = num[s.length()-1];
            delete[] num;
            return ret;
        }
    };
  • 相关阅读:
    vue
    手写Promise
    Promise应用
    Promise
    JS_URL模块
    模板字符串应用
    JS-OOP
    jQuery——过时,但是经典,关注核心点即可。
    MySql补充
    offset系列
  • 原文地址:https://www.cnblogs.com/tonix/p/3872363.html
Copyright © 2011-2022 走看看