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.
求两个非负整数的乘积。
#include "MultiplyStrings.h"
string MultiplyStrings::multiply(string num1, string num2)
{
string sum(num1.size() + num2.size(), '0');
//字符串存储数字,字符串的低位是数字的高位
for (int i = num1.size() - 1; i >= 0; i--)
{
//标记进位
int carry = 0;
for (int j = num2.size() - 1; j >= 0; j--)
{
//模拟乘法的机制
int tmp = (sum[i + j + 1] - '0') + (num1[i] - '0') * (num2[j] - '0') + carry;
sum[i + j + 1] = tmp % 10 + '0';
carry = tmp / 10;
}
//注意这里的进位标记,字符串从低位存高位
sum[i] += carry;
}
size_t startpos = sum.find_first_not_of("0");
if (string::npos != startpos) {
return sum.substr(startpos);
}
return "0";
}