#!/usr/bin/python# -*- coding: utf-8 -*-'''
Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note:
The numbers can be arbitrarily large and are non-negative.
Converting the input string to integer is NOT allowed.
You should NOT use internal library such as BigInteger.
'''classSolution(object):defmultiply(self, num1, num2):"""
:type num1: str
:type num2: str
:rtype: str
"""
len1,len2 = len(num1),len(num2)
if0 == len1 or0 == len2:
return'0'
length = len1 + len2 + 2
result = [0] * length
n1 = [int(i) for i in reversed(num1)]
n2 = [int(i) for i in reversed(num2)]
for index1,val1 in enumerate(n1):
for index2,val2 in enumerate(n2):
index = index1 + index2
tmp = result[index] + val1 * val2
result[index] = tmp%10
tmp = tmp/10
tmp_index = 1while tmp > 0:
tmp += result[index + tmp_index]
result[index + tmp_index] = tmp%10
tmp = tmp/10
tmp_index += 1print result
index = length - 1while index >= 0and result[index] == 0:
index -= 1if index == -1:
return'0'return''.join([str(i) for i in reversed(result[:index + 1])])
if __name__ == "__main__":
s = Solution()
print s.multiply('11','999')
print s.multiply('11','0')
print s.multiply('123','456')