#!/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.
'''
class Solution(object):
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
len1,len2 = len(num1),len(num2)
if 0 == len1 or 0 == 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 = 1
while tmp > 0:
tmp += result[index + tmp_index]
result[index + tmp_index] = tmp%10
tmp = tmp/10
tmp_index += 1
print result
index = length - 1
while index >= 0 and result[index] == 0:
index -= 1
if 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')
52 leetcode - Multiply Strings
最新推荐文章于 2024-07-18 08:26:33 发布