43. Multiply Strings
2017-10-26 22:47
295 查看
这道题看了别人的程序,才对乘法有了更多的认识:
我们仍然是从低位到高位对每一位进行计算,假设第一个数长度是n,第二个数长度是m,我们知道结果长度为m+n或者m+n-1(没有进位的情况)。对于某一位i,要计算这个位上的数字,我们需要对所有能组合出这一位结果的位进行乘法,即第1位和第i位,第2位和第i-1位,...
,然后累加起来,最后我们取个位上的数值,然后剩下的作为进位放到下一轮循环中。
class Solution {
public:
string multiply(string num1, string num2) {
int m = num1.size(), n = num2.size();
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
vector<int> d(m + n, 0);
for(int i = 0; i < m; ++i){
int a = num1[i] - '0';
for(int j = 0; j < n; ++j){
int b = num2[j] - '0';
d[i + j] += a * b;
}
}
string sb;
for(int i = 0; i < d.size(); ++i){
int digit = d[i] % 10;
int carry = d[i] / 10;
sb = to_string(digit) + sb;
if(i < d.size() - 1){
d[i + 1] += carry;
}
}
while(sb.size() > 0 && sb[0] == '0'){
sb.erase(sb.begin());
}
return sb.size() == 0 ? "0" : sb;
}
};
相关文章推荐
- LeetCode_43---Multiply Strings
- LeetCode(43)Multiply Strings
- 43. Multiply Strings
- [Leetcode 43, medium] Multiply Strings
- leetcode 43: Multiply Strings
- [leedcode 43] Multiply Strings
- leetcode 43: Multiply Strings
- LeetCode(43)Multiply Strings
- 43. Multiply Strings
- leetcode@ [2/43] Add Two Numbers / Multiply Strings(大整数运算)
- 43. Multiply Strings | Java最短代码实现
- LeetCode 43题之 Multiply Strings
- [Leetcode 90] 43 Multiply Strings
- 43. Multiply Strings
- Leet Code 43 Multiply Strings - 字符串表示的数相乘 - Java
- 43. Multiply Strings
- LeetCode 43. Multiply Strings
- 【LeetCode】43. Multiply Strings
- LeetCode(43) Multiply Strings
- leetcode 43 : Multiply Strings