Test Failed
Push — master ( 853c98...e3b2de )
by Jinyun
02:12
created

MultiplyStrings   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 11
eloc 18
c 1
b 0
f 0
dl 0
loc 28
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B multiply() 0 26 11
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class MultiplyStrings
8
{
9
    public static function multiply(string $p, string $q): string
10
    {
11
        if (empty($p) || empty($q)) {
12
            return '0';
13
        }
14
        if ($p === '0' && $q === '0') {
15
            return '0';
16
        }
17
18
        [$m, $n] = [strlen($p), strlen($q)];
19
        $map = array_fill(0, $m + $n, 0);
20
        for ($i = $m - 1; $i >= 0; $i--) {
21
            for ($j = $n - 1; $j >= 0; $j--) {
22
                [$k, $v] = [$i + $j + 1, $p[$i] * $q[$j]];
23
                $sum = $v + $map[$k];
24
                $map[$k] = $sum % 10;
25
                $map[$k - 1] += intdiv($sum, 10);
26
            }
27
        }
28
        $s = '';
29
        for ($i = 0; $i < ($m + $n) && $map[$i] === 0; $i++);
30
        for (; $i < ($m + $n); $i++) {
31
            $s .= $map[$i];
32
        }
33
34
        return strlen($s) === 0 ? '0' : $s;
35
    }
36
}
37