[leetcode]306. Additive Number -- JavaScript 代码

来源:互联网 发布:同志软件aloha 编辑:程序博客网 时间:2024/06/03 16:35

这段js代码是参考了某大神的java代码。
原博客见链接 –> http://blog.csdn.net/sbitswc/article/details/50191729
javascript代码如下:

/** * @param {string} num * @return {boolean} */var isAdditiveNumber = function(num) {    //console.log(Number(nums[0])+Number(nums[1]));    var len = num.length;    if(len<1){        return false;    }    for(var i=1;i<=len/2;i++){        for(var j=1;Math.max(i,j)<=len-i-j;j++){            if(isValid(i,j,num)){                return true;// i:第一个数字字符长度 j:第二个数字字符长度            }        }    }    return false;    function isValid(num1,num2,nums){        if(num.charAt(num1) == '0' && num2>1) return false;        if(num.charAt(0) == '0' && num1>1) return false;        var x1 = Number(nums.substring(0,num1));        var x2 = Number(nums.substring(num1,num1+num2));        var sum = "";        for(var k=num1+num2;k!=nums.length;k+=sum.length){            x2 = x2 + x1;            x1 = x2 - x1;            sum = x2.toString();//num.startsWith(sum, k)            if(nums.substring(k,k+sum.length)!=sum){                return false;            }        }        return true;    }};

这段代码其实是用了最简单的暴力循环,不过巧妙的限制了循环条件,所以代码的执行效率还比较高的。
isValid函数判断的是,当第一个数字字符的长度为nums1,第二个数字字符为nums2的时候,原字符串是否符合题目条件。函数中的for循环用于迭代,完成整条字符串的判断。

0 0