码迷,mamicode.com
首页 > 其他好文 > 详细

43. Multiply Strings 字符串相乘

时间:2018-02-12 23:41:41      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:www.   rar   tle   number   ica   字符串   order   cin   type   

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 110.

  2. Both num1 and num2 contains only digits 0-9.

  3. Both num1 and num2 does not contain any leading zero.

  4. You must not use any built-in BigInteger library or convert the inputs to integer directly


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
53
54
class Solution1:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        if num1 is "0" or num2 is "0":
            return "0"
        pos = [[] for i in range(len(num1) + len(num2))]
        startIndex = 0
        for i in range(len(num2) - 1, -1, -1):
            curStartIndex = 0
            for j in range(len(num1) - 1, -1, -1):
                cur = str(int(num2[i]) * int(num1[j]))
                curIndex = 0
                for k in range(len(cur) - 1, -1, -1):
                    pos[startIndex + curStartIndex + curIndex].append(cur[k])
                    curIndex += 1
                curStartIndex += 1
            startIndex += 1
 
        res = ""
        carry = 0
        index = 0
        while index < len(pos) or carry:
            val = carry
            for cur in pos[index]:
                val += int(cur)
            carry = int(val / 10)
            res = str(val % 10) + res
            index += 1
        return res.lstrip("0")
 
 
class Solution2:
    def multiply(self, num1, num2):
        res = 0
        for i in range(len(num1)):
            res *= 10
            n = int(num1[i])
            temp_n = 0
            for j in range(len(num2)):
                temp_n *= 10
                temp_n += int(num2[j]) * n
            res += temp_n
        return str(res)
 
 
s = Solution1()
num1 = "999"
num2 = "999"
res = s.multiply(num1, num2)
print(res)






43. Multiply Strings 字符串相乘

标签:www.   rar   tle   number   ica   字符串   order   cin   type   

原文地址:https://www.cnblogs.com/xiejunzhao/p/8445796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!