Skip to content

Commit e7dc20b

Browse files
author
谭佳胜
committed
Multiply Strings
1 parent 1deb687 commit e7dc20b

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

43. Multiply Strings/index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
const add = function(num1, num2) {
2+
let i = num1.length - 1;
3+
let j = num2.length - 1;
4+
let result = '';
5+
let carry = 0;
6+
7+
while (i >= 0 || j >= 0) {
8+
const sum = Number(num1[i] || 0) + Number(num2[j] || 0) + carry;
9+
10+
result = `${sum % 10}${result}`;
11+
carry = parseInt(sum / 10);
12+
13+
i--;
14+
j--;
15+
}
16+
17+
if (carry === 1) {
18+
result = `1${result}`;
19+
}
20+
21+
return result;
22+
}
23+
const multiply = function(num1, num2) {
24+
let i = num1.length;
25+
let j = num2.length;
26+
let carry = 0;
27+
let zeros = '';
28+
const resultArr = [];
29+
30+
if (num1 === '0' || num2 === '0') return '0';
31+
32+
for (let m = i - 1; m >= 0; m--) {
33+
resultArr[m] = '';
34+
35+
for (let n = j - 1; n >= 0; n--) {
36+
const sum = Number(num1[m]) * Number(num2[n]) + carry;
37+
38+
39+
resultArr[m] = `${sum % 10}${resultArr[m]}`;
40+
carry = parseInt(sum / 10);
41+
}
42+
43+
if (carry > 0) {
44+
resultArr[m] = `${carry}${resultArr[m]}`;
45+
carry = '';
46+
}
47+
48+
resultArr[m] += zeros;
49+
zeros += '0';
50+
}
51+
52+
return resultArr.reduce((pre, cur) => add(pre, cur), '');
53+
};

43. Multiply Strings/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
模拟笔算的流程

0 commit comments

Comments
 (0)