您的位置:首页 > 其它

43. Multiply Strings

2017-06-21 16:43 288 查看
Given two non-negative integers 
num1
 and 
num2
 represented
as strings, return the product of 
num1
 and 
num2
.
Note:
The length of both 
num1
 and 
num2
 is
< 110.
Both 
num1
 and 
num2
 contains
only digits 
0-9
.
Both 
num1
 and 
num2
 does
not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.

1 class Solution
2 {
3 public:
4     string multiply(string num1, string num2)
5     {
6         vector<int> vi(num1.size() + num2.size(), 0);
7         for(int i = 0; i < num1.size(); ++ i)
8             for(int j = 0; j < num2.size(); ++ j)
9                 vi[i + j] += (num1[num1.size() - i - 1] - '0') * (num2[num2.size() - j- 1] - '0');
10
11         for(int i = 0, c = 0; i < vi.size(); ++ i)
12         {
13             int num = vi[i] + c;
14             vi[i] = num % 10;
15             c = num / 10;
16         }
17
18         string s = "";
19         int i = vi.size();
20         while(-- i >= 0 && vi[i] == 0);
21         if(i < 0)
22             s = "0";
23         else
24             for( ; i >= 0; -- i)
25                 s += vi[i] + '0';
26
27         return s;
28     }
29 };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: