Skip to content

Commit f56cac4

Browse files
authored
feat: add typescript solution to lc problem: No.0043.Multiply Strings (doocs#585)
1 parent 9c32c3c commit f56cac4

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

solution/0000-0099/0043.Multiply Strings/README.md

+34
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,40 @@
5050

5151
```
5252

53+
### **TypeScript**
54+
55+
```ts
56+
function multiply(num1: string, num2: string): string {
57+
if ([num1, num2].includes('0')) return '0';
58+
const n1 = num1.length, n2 = num2.length;
59+
let ans = '';
60+
for(let i = 0; i < n1; i++) {
61+
let cur1 = parseInt(num1.charAt(n1 - i - 1), 10);
62+
let sum = '';
63+
for(let j = 0; j < n2; j++) {
64+
let cur2 = parseInt(num2.charAt(n2 - j - 1), 10);
65+
sum = addString(sum, cur1 * cur2 + ('0'.repeat(j)));
66+
}
67+
ans = addString(ans, sum + ('0'.repeat(i)));
68+
}
69+
return ans;
70+
};
71+
72+
function addString(s1: string, s2: string): string {
73+
const n1 = s1.length, n2 = s2.length;
74+
let ans = [];
75+
let sum = 0;
76+
for (let i = 0; i < n1 || i < n2 || sum > 0; i++) {
77+
let num1 = s1.charAt(i) ? parseInt(s1.charAt(i), 10) : 0;
78+
let num2 = s2.charAt(i) ? parseInt(s2.charAt(i), 10) : 0;
79+
sum += (num1 + num2);
80+
ans.unshift(sum % 10);
81+
sum = Math.floor(sum / 10);
82+
}
83+
return ans.join('');
84+
}
85+
```
86+
5387
### **...**
5488

5589
```

solution/0000-0099/0043.Multiply Strings/README_EN.md

+34
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,40 @@
4242

4343
```
4444

45+
### **TypeScript**
46+
47+
```ts
48+
function multiply(num1: string, num2: string): string {
49+
if ([num1, num2].includes('0')) return '0';
50+
const n1 = num1.length, n2 = num2.length;
51+
let ans = '';
52+
for(let i = 0; i < n1; i++) {
53+
let cur1 = parseInt(num1.charAt(n1 - i - 1), 10);
54+
let sum = '';
55+
for(let j = 0; j < n2; j++) {
56+
let cur2 = parseInt(num2.charAt(n2 - j - 1), 10);
57+
sum = addString(sum, cur1 * cur2 + ('0'.repeat(j)));
58+
}
59+
ans = addString(ans, sum + ('0'.repeat(i)));
60+
}
61+
return ans;
62+
};
63+
64+
function addString(s1: string, s2: string): string {
65+
const n1 = s1.length, n2 = s2.length;
66+
let ans = [];
67+
let sum = 0;
68+
for (let i = 0; i < n1 || i < n2 || sum > 0; i++) {
69+
let num1 = s1.charAt(i) ? parseInt(s1.charAt(i), 10) : 0;
70+
let num2 = s2.charAt(i) ? parseInt(s2.charAt(i), 10) : 0;
71+
sum += (num1 + num2);
72+
ans.unshift(sum % 10);
73+
sum = Math.floor(sum / 10);
74+
}
75+
return ans.join('');
76+
}
77+
```
78+
4579
### **...**
4680

4781
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function multiply(num1: string, num2: string): string {
2+
if ([num1, num2].includes('0')) return '0';
3+
const n1 = num1.length, n2 = num2.length;
4+
let ans = '';
5+
for(let i = 0; i < n1; i++) {
6+
let cur1 = parseInt(num1.charAt(n1 - i - 1), 10);
7+
let sum = '';
8+
for(let j = 0; j < n2; j++) {
9+
let cur2 = parseInt(num2.charAt(n2 - j - 1), 10);
10+
sum = addString(sum, cur1 * cur2 + ('0'.repeat(j)));
11+
}
12+
ans = addString(ans, sum + ('0'.repeat(i)));
13+
}
14+
return ans;
15+
};
16+
17+
function addString(s1: string, s2: string): string {
18+
const n1 = s1.length, n2 = s2.length;
19+
let ans = [];
20+
let sum = 0;
21+
for (let i = 0; i < n1 || i < n2 || sum > 0; i++) {
22+
let num1 = s1.charAt(i) ? parseInt(s1.charAt(i), 10) : 0;
23+
let num2 = s2.charAt(i) ? parseInt(s2.charAt(i), 10) : 0;
24+
sum += (num1 + num2);
25+
ans.unshift(sum % 10);
26+
sum = Math.floor(sum / 10);
27+
}
28+
return ans.join('');
29+
}

0 commit comments

Comments
 (0)