[leetcode] Multiply Strings
2015-02-03 14:50
281 查看
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.
分析:
模拟手算乘法即可。分两部分:字符串的乘法,字符串的加法。
例如:
99
* 12
------------------
198
+ 99
------------------
297
class Solution { public: string add(string num1, string num2) { string ret = ""; int flag = 0, temp = 0; int i = num1.size() - 1, j = num2.size() - 1; for(; i >= 0 || j >= 0; --i, --j) { if(i >= 0 && j >= 0) temp = num1[i] - '0' + num2[j] - '0' + flag; else if(i >= 0 && j < 0) temp = num1[i] - '0' + flag; else temp = num2[j] - '0' + flag; flag = temp / 10; temp = temp % 10; ret.insert(ret.begin(), '0' + temp); } if(flag == 1) ret.insert(ret.begin(), '1'); return ret; } public: string multiply(string num1, string num2) { if(num1 == "0" || num2 == "0") return "0"; string ret = "", str = ""; int i = 0, j = 0, temp = 0, flag = 0; for(j = num2.size()-1; j>=0; --j) { str = ""; flag = 0; for(i = num1.size()-1; i>=0; --i) { temp = (num1[i] - '0') * (num2[j] - '0') + flag; flag = temp / 10; temp = temp % 10; str.insert(str.begin(), temp + '0'); } if(flag > 0) str.insert(str.begin(), flag + '0'); for(int k = j; k < num2.size()-1; k++) str += "0"; ret = add(str, ret); } return ret; } };
相关文章推荐
- [LeetCode]Multiply Strings
- Java [Leetcode 43]Multiply Strings
- LeetCode(43)Multiply Strings
- Multiply Strings--LeetCode
- [LeetCode] Multiply Strings
- [LeetCode]Multiply Strings
- [LeetCode] Multiply Strings
- Multiply Strings 两个字符串代表数字相乘@LeetCode
- LeetCode43 Multiply Strings
- [LeetCode] Multiply Strings
- leetcode -- Multiply Strings
- Multiply Strings--LeetCode
- LeetCode: Multiply Strings
- LeetCode_43---Multiply Strings
- LeetCode Multiply Strings
- Multiply Strings leetcode java
- [leetcode] Multiply Strings
- Leetcode Multiply Strings
- leetcode 日经贴,Cpp code -Multiply Strings
- LeetCode-Multiply Strings