https://leetcode.com/problems/multiply-strings/description/
Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
, also represented as a string.
Example 1:
Input: num1 = "2", num2 = "3" Output: "6"
Example 2:
Input: num1 = "123", num2 = "456" Output: "56088"
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contain only digits0-9
. - Both
num1
andnum2
do not contain any leading zero, except the number 0 itself. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
class Solution(object):
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
res = [0 for _ in range(220)]
for i in range(len(num1) - 1, -1, -1):
for j in range(len(num2) - 1, -1, -1):
num = int(num1[i]) * int(num2[j])
res[len(num1) - i + len(num2) - j - 2] += num % 10
res[len(num1) - i + len(num2) - j - 1] += num / 10
string = ''
length = len(res) - 1
while length >= 0 and res[length] == 0:
length -= 1
print res
i = 0
while i <= length:
res[i + 1] += res[i] / 10
res[i] %= 10
i += 1
if res[length + 1] == 0:
i = length
while i >= 0:
string += str(res[i])
i -= 1
if string == '':
return '0'
return string