题解 | #大数乘法#

大数乘法

http://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

没有javascript的提交,我提交一个吧。过程就是模拟手算,一个一个数字相乘。最后加起来

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param s string字符串 第一个整数
 * @param t string字符串 第二个整数
 * @return string字符串
 */
function solve( s ,  t ) {
    // write code here
    const sLength = s.length;
    const tLength = t.length;
    let res = [];
    for (let tIndex = tLength - 1; tIndex >= 0; tIndex--) {
        const valT = parseInt(t[tIndex] || '0', 10);
        let sum = [];
        let sign = 0;
        for (let i = tLength - tIndex; i > 1 ; i--) {
            sum.push('0')
        }
        for(let sIndex = sLength - 1; sIndex >= 0; sIndex--) {
           const valS = parseInt(s[sIndex] || '0', 10);
           let temp = valT * valS + sign;
           if (temp >= 10) {
               sign = Math.floor(temp / 10);
               temp = temp % 10;
           } else {
               sign = 0;
           }
           sum.push(temp + '');
        }
        if (sign) {
            sum.push(sign + '');
        }
        res.push(sum.reverse().join(''));
    }
    let temp = '0';
    console.log(res)
    for(let i = 0; i < res.length; i++) {
        temp = add(temp, res[i]);
    }
    return temp;
}
function add(a, b) {
    let alength = a.length;
    let blength = b.length;
    let res = [];
    let sign = 0;
    for(let i = alength - 1, j = blength - 1; i >= 0 || j >= 0; i--, j--) {
       let temp = parseInt(a[i] || '0', 10) + parseInt(b[j] || '0', 10) + sign;
       if (temp >= 10) {
           sign = 1;
           temp = temp - 10;
       } else {
           sign = 0;
       }
       res.push(temp);
    }
    if (sign) res.push(sign);
    return res.reverse().join('').replace(/^0*(.+)/, '$1');
}
module.exports = {
    solve : solve
};
全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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