Fork me on GitHub

Multiply Strings

Description

https://leetcode.com/problems/multiply-strings/description/

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class Solution:
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
lens1 = len(num1)
lens2 = len(num2)
if lens1 == 0 or lens2 == 0 or int(num1) == 0 or int(num2) == 0:
return "0"

ret = ""
multi_matrix = []
max_len = -1
for i in range(0, lens2):
string = self.multiply_one_digit(num1, num2[-1-i]) + "0" * i
max_len = max(max_len, len(string))
multi_matrix.append(string)

has_value = True
append = 0
for digit in range(0, max_len):
has_value = False
value = 0
for index in range(len(multi_matrix)):
if digit < len(multi_matrix[index]):
value += int(multi_matrix[index][-1-digit])
value += append
append = value // 10
ret = str(value % 10) + ret

if append != 0:
ret = str(append) + ret
return ret



def multiply_one_digit(self, num, digit):
ret = ""
append = 0
for i in range(0, len(num)):
result_digit = str((int(num[-1-i])*int(digit) + append) % 10)
ret = result_digit + ret
append = (int(num[-1-i])*int(digit) + append) // 10

print (ret)
print (append)
if append != 0:
ret = str(append) + ret

return ret