zoukankan      html  css  js  c++  java
  • 【leetcode】Decode Ways

    题目如下:

    解题思路:这个题目的本质是一个爬楼梯问题,在爬楼梯问题中,每次可以选择走一步或者两步。而本题也是一样的,解码的时候选择解码一个字符或者两个字符,但是加大了一点点难度,要考虑这些情况。1,Z对应的编码是26,所以超过26的连续两个字符不能合并解码,27只能解析成2和7;2,0字符只能和前面的字符合并解码,不能单独作为一个字符解码。

    代码如下:

    /**
     * @param {string} s
     * @return {number}
     */
    var numDecodings = function(s) {
        if(s.length == 0 || parseInt(s) == 0 || s[0] == '0' || s.indexOf('00') != -1){
            return 0
        }
        var ds = ""
        for(var i =0 ;i<s.length-1;i++){
            if(s[i] == 0){
                continue
            }
            if(s[i+1] != 0){
                ds += s[i]
            }
            else if(s[i] <='2'){
                ds += "A"
            }
            else{
                return 0
            }
        }
        if(s[s.length-1] != '0')
            ds += s[s.length-1]
        
        var dp = new Array(ds.length)
        dp[0] = 1
    
        if(ds[0] <='2' && ds[0] > '0' && ds[1] !='A'){
            if(ds[0] == 2 && ds[1] >='7'){
                dp[1] = 1
            }
            else{
                dp[1] = 2
            }
        }
        else{
            dp[1] = 1
        }
    
        for(var i = 2;i<ds.length;i++) {
            if (ds[i] == 'A') {
                dp[i] = dp[i - 1]
                continue
            }
            if (ds[i - 1] <= '2' && ds[i - 1] > 0 ) {
                if(ds[i-1] == '2' &&  ds[i] > '6'){
                    dp[i] = dp[i - 1]
                }
                else{
                    dp[i] = dp[i - 1] + dp[i - 2]
                }
            }
            else {
                dp[i] = dp[i - 1]
            }
        }
        //console.log(dp)
        return dp[ds.length-1]
    };
  • 相关阅读:
    centos7安装mysql5.7
    Day1:基于ECS搭建FTP服务
    sql多表语句
    SSM多表查询
    ssm中使用逆向工程
    用maven对ssm进行整合
    Maven设置本地仓和阿里云远程仓
    解决maven项目中web.xml is missing and <failOnMissingWebXml> is set to true
    SSM登陆
    理解ConcurrentMap
  • 原文地址:https://www.cnblogs.com/seyjs/p/8706634.html
Copyright © 2011-2022 走看看