var multiply = function (num1, num2) { if (num1 === '0' || num2 === '0') return '0' let len1 = num1.length, len2 = num2.length, res = new Array(len1 + len2).fill(0) for (let i = len1 - 1; i >= 0; i--) { for (let j = len2 - 1; j >= 0; j--) { const mul = num1[i] * num2[j] const p1 = i + j, p2 = i + j + 1 const sum = mul + res[p2] res[p1] += Math.floor(sum / 10) res[p2] = sum % 10 } } if (res[0] === 0) res.shift() return res.join("") };
时间: 2024-02-15 20:28:35 浏览: 65
js代码-es6测试1
这是一个实现两个字符串的乘法的函数,函数名为multiply,参数为num1和num2。
首先,判断num1和num2是否有一个为0,如果有,直接返回'0'。
接着,定义变量len1为num1的长度,变量len2为num2的长度,变量res为长度为len1+len2的数组,用于存储乘积。
然后,使用两个嵌套的循环遍历num1和num2中的每个数字,并计算它们的乘积和对应的进位。
具体来说,在外层循环中,从num1的最后一位开始遍历,内层循环也是从num2的最后一位开始遍历。
假设当前遍历到num1的第i位,遍历到num2的第j位,那么它们的乘积就是num1[i] * num2[j]。
由于乘积结果可能大于10,所以需要定义两个指针p1和p2来保存进位的值。p1的初始值为i+j,p2的初始值为i+j+1。
然后,计算当前乘积加上p2位置的进位值res[p2]的和,得到sum = mul + res[p2]。
将sum的十位数加到res[p1]中,将sum的个位数保存到res[p2]中。
最后,如果res的第一个数字为0,需要将其去掉,然后将数组转换为字符串返回即可。
需要注意的是,在乘法计算中,num1和num2中的数字都是按照字符串的形式进行处理的,不需要将其转换为整型数再进行计算。
阅读全文