@@ -325,6 +325,88 @@ class Solution {
325
325
}
326
326
```
327
327
328
+ #### Kotlin
329
+
330
+ ``` kotlin
331
+ class Solution {
332
+ fun multiply (num1 : String , num2 : String ): String {
333
+ if (num1 == " 0" || num2 == " 0" ) return " 0"
334
+
335
+ val chars_1 = num1.toCharArray().reversedArray()
336
+ val chars_2 = num2.toCharArray().reversedArray()
337
+
338
+ val result = mutableListOf<Int >()
339
+
340
+ chars_1.forEachIndexed { i, c1 ->
341
+ val multiplier_1 = c1 - ' 0'
342
+ var over = 0
343
+ var index = 0
344
+
345
+ fun sum (product : Int = 0): Unit {
346
+ while (index >= result.size) {
347
+ result.add(0 )
348
+ }
349
+ val value = product + over + result[index]
350
+ result[index] = value % 10
351
+ over = value / 10
352
+ return
353
+ }
354
+
355
+ chars_2.forEachIndexed { j, c2 ->
356
+ index = i + j
357
+ val multiplier_2 = c2 - ' 0'
358
+ sum(multiplier_1 * multiplier_2)
359
+ }
360
+
361
+ while (over > 0 ) {
362
+ index++
363
+ sum()
364
+ }
365
+ }
366
+
367
+ return result.reversed().joinToString(" " )
368
+ }
369
+ }
370
+ ```
371
+
372
+ #### JavaScript
373
+
374
+ ``` js
375
+ /**
376
+ * @param {string} num1
377
+ * @param {string} num2
378
+ * @return {string}
379
+ */
380
+ var multiply = function (num1 , num2 ) {
381
+ if (num1 === ' 0' || num2 === ' 0' ) return ' 0' ;
382
+
383
+ const result = Array (num1 .length + num2 .length ).fill (0 );
384
+ const code_0 = ' 0' .charCodeAt (0 );
385
+
386
+ const num1_len = num1 .length ;
387
+ const num2_len = num2 .length ;
388
+
389
+ for (let i = 0 ; i < num1_len; ++ i) {
390
+ const multiplier_1 = num1 .charCodeAt (num1_len - i - 1 ) - code_0;
391
+ for (let j = 0 ; j < num2_len; ++ j) {
392
+ const multiplier_2 = num2 .charCodeAt (num2_len - j - 1 ) - code_0;
393
+ result[i + j] += multiplier_1 * multiplier_2;
394
+ }
395
+ }
396
+
397
+ result .reduce ((carry , value , index ) => {
398
+ const sum = carry + value;
399
+ result[index] = sum % 10 ;
400
+ return (sum / 10 ) | 0 ;
401
+ }, 0 );
402
+
403
+ return result
404
+ .slice (0 , result .findLastIndex (d => d !== 0 ) + 1 )
405
+ .reverse ()
406
+ .join (' ' );
407
+ };
408
+ ```
409
+
328
410
<!-- tabs: end -->
329
411
330
412
<!-- solution: end -->
0 commit comments