码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 43. Multiply Strings

时间:2019-12-15 20:18:18      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:dig   必须   console   math   相加   不同的   rod   fun   fill   

注意各种反转

var multiply = function (a, b) {
      var cn = a.length + b.length;
      var product = new Array(cn).fill(0);
      /****
       * 两两相乘,并放进不同的格子里,如果里面有东西,则相加
       *   num1 = "123",  num2 = "456"
       *  0 * 0 , 0 * 1, 0 * 2
       *           1 * 0   1* 1   1 * 2
       *                   2 *0   2 * 1   2* 2
       *  位数A与位数B相乘,那么它们的值的个位应该放 A +B 的位置上
       */
      a = a.split('').reverse()
      b = b.split('').reverse()
      for (var i = 0; i < a.length; i++) {
        for (var j = 0; j < b.length; j++) {
          //必须加1,考虑要进位,
          var digit = i + j
          product[digit] += Number(a[i]) * Number(b[j])
          product[digit + 1] += Math.floor(product[digit] / 10);//处理进位
          product[digit] %= 10
        }
      }
      product.reverse()
      while (product[0] == 0) {
        product.shift();
      }
      //处理最前面的零
      return product.join('') || '0'
    }


    console.log(multiply('123', '456'))

leetcode 43. Multiply Strings

标签:dig   必须   console   math   相加   不同的   rod   fun   fill   

原文地址:https://www.cnblogs.com/rubylouvre/p/12045488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!