Skip to content

Commit d698fec

Browse files
authored
Update multiply-strings.py
1 parent 03f6ab0 commit d698fec

File tree

1 file changed

+33
-13
lines changed

1 file changed

+33
-13
lines changed

Python/multiply-strings.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,57 @@
22
# Space: O(m + n)
33

44
class Solution(object):
5+
def multiply(self, num1, num2):
6+
"""
7+
:type num1: str
8+
:type num2: str
9+
:rtype: str
10+
"""
11+
result = [0]*(len(num1)+len(num2))
12+
for i in reversed(xrange(len(num1))):
13+
for j in reversed(xrange(len(num2))):
14+
result[i+j+1] += int(num1[i])*int(num2[j])
15+
result[i+j] += result[i+j+1]//10
16+
result[i+j+1] %= 10
17+
for i in xrange(len(result)):
18+
if result[i]:
19+
return "".join(map(lambda x: str(x), result[i:]))
20+
return "0"
21+
22+
# Time: O(m * n)
23+
# Space: O(m + n)
24+
class Solution2(object):
525
def multiply(self, num1, num2):
626
"""
727
:type num1: str
828
:type num2: str
929
:rtype: str
1030
"""
1131
num1, num2 = num1[::-1], num2[::-1]
12-
res = [0] * (len(num1) + len(num2))
32+
result = [0]*(len(num1)+len(num2))
1333
for i in xrange(len(num1)):
1434
for j in xrange(len(num2)):
15-
res[i + j] += int(num1[i]) * int(num2[j])
16-
res[i + j + 1] += res[i + j] / 10
17-
res[i + j] %= 10
18-
19-
# Skip leading 0s.
20-
i = len(res) - 1
21-
while i > 0 and res[i] == 0:
22-
i -= 1
35+
result[i+j] += int(num1[i])*int(num2[j])
36+
result[i+j+1] += result[i+j]//10
37+
result[i+j] %= 10
2338

24-
return ''.join(map(str, res[i::-1]))
39+
for i in reversed(xrange(len(result))):
40+
if result[i]:
41+
break
42+
print result
43+
for i in reversed(xrange(len(result))):
44+
if result[i]:
45+
break
46+
return "".join(map(str, result[i::-1]))
2547

2648
# Time: O(m * n)
2749
# Space: O(m + n)
2850
# Using built-in bignum solution.
29-
class Solution2(object):
51+
class Solution3(object):
3052
def multiply(self, num1, num2):
3153
"""
3254
:type num1: str
3355
:type num2: str
3456
:rtype: str
3557
"""
3658
return str(int(num1) * int(num2))
37-
38-

0 commit comments

Comments
 (0)