您的位置:首页 > Web前端 > JavaScript

[leetcode javascript解题]Multiply Strings

2017-01-04 22:20 447 查看
leetcode 第43题“Multiply Strings”描述如下:

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note:

The numbers can be arbitrarily large and are non-negative.

Converting the input string to integer is NOT allowed.

You should NOT use internal library such as BigInteger.

题目就是通过字符串实现大数乘法。关键是把握好进位问题,我代码的思路比较清晰,但是略显繁琐。还有改进的地方:

/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function(num1, num2) {
var result = [],
temp, l1 = num1.length,
l2 = num2.length,
resultStr = "";
for (var i = l1 - 1; i >= 0; i--) {
for (var j = l2 - 1; j >= 0; j--) {
temp = num1[i] * num2[j];
var tenTemp = Math.floor(temp / 10),
oneTemp = Math.floor(temp % 10);
result[l1 + l2 - i - j - 1] = result[l1 + l2 - i - j - 1] + oneTemp || oneTemp; //个位储存
result[l1 + l2 - i - j] = result[l1 + l2 - i - j] + tenTemp || tenTemp; //十位储存
}
}
for (i = 1; i < result.length; i++) {
if (result[i] >= 10) { //进位
result[i + 1] += Math.floor(result[i] / 10);
result[i] = Math.floor(result[i] % 10);
}
}
for (j = result.length - 1; j > 0; j--) { //将数组转为字符串
resultStr += result[j];
}
var index = 0;
while (resultStr[index] === "0") {
index++;
}
return resultStr.substr(index) === "" ? "0" : resultStr.substr(index);
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode javascript 43题