LeetCode --- 43. Multiply Strings
来源:互联网 发布:python语言与自动驾驶 编辑:程序博客网 时间:2024/04/29 15:44
题目链接: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.
这道题的要求是计算大数乘法。其中大数是以字符串的形式表示,任意大,非负,返回结果以字符串形式。
这道题其实就是模拟整数乘法。
假设两个整数的长度分别为了l1和l2,则其最后结果长度为l1+l2(最后有进位)或者l1+l2-1(最后没有有进位)。
因此,可以先用长度为l1+l2的数组记录结果,最后再转成字符串。
进行乘法的时候,先把各个位的相乘结果对应累加起来,即第1个整数的第i位(低位到高位)和第2个整数的第j位(低位到高位)相乘的结果应该存放在数组的i+j位。然后再统一处理进位。
然后再统一处理进位。
最后再将数组转成字符串前,需要跳过前面的零。如果结果只有0,则只返回0。
时间复杂度:O(l1l2)(l1和l2分别为两个整数长度)
空间复杂度:O(l1+l2)
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 else24 for( ; i >= 0; -- i)25 s += vi[i] + '0';26 27 return s;28 }29 };
转载请说明出处:LeetCode --- 43. Multiply Strings
0 0
- [LeetCode]43.Multiply Strings
- LeetCode --- 43. Multiply Strings
- [Leetcode] 43. Multiply Strings
- [leetcode] 43.Multiply Strings
- 43. Multiply Strings LeetCode
- leetcode 43. Multiply Strings
- LeetCode 43. Multiply Strings
- LeetCode 43. Multiply Strings
- LeetCode 43. Multiply Strings
- [leetcode] 43. Multiply Strings
- Leetcode 43. Multiply Strings
- (Leetcode)43. Multiply Strings
- LeetCode - 43. Multiply Strings
- leetcode 43. Multiply Strings
- [LeetCode] 43. Multiply Strings
- leetcode 43. Multiply Strings
- Leetcode 43. Multiply Strings
- leetcode 43. Multiply Strings
- Oracle OSB和Oracle ESB的区别
- HTTP
- iOS 产品被 苹果appstore拒绝的n个理由
- 在Dubbo中开发REST风格的远程调用(RESTful Remoting)
- HTTP原理
- LeetCode --- 43. Multiply Strings
- 给图片变成倒影
- 装饰大全中室内的楼梯规划
- Https及其原理
- air max pas cher doing nothing
- LeetCode --- 44. Wildcard Matching
- LeetCode --- 45. Jump Game II
- mfc 对话框常用小技巧
- http协议中各种长度限制