题目如下:
解题思路:
竖式乘法,代码如下:
class Solution {
public:
string multiply(string num1, string num2) {
if(num1 == "0" || num2 == "0")
return "0";
int m = num1.size();
int n = num2.size();
vector<int> res(m+n) ; //默认初始化为0
for(int i = m-1; i >= 0; i--){
for(int j = n-1; j >= 0; j--){
int tmp = (num1[i] - '0') * (num2[j] - '0'); //两个位数上的乘积
tmp += res[i + j + 1]; //先加当前对应的低位,判断是否有进位
//分别处理进位
res[i + j + 1] = tmp % 10; //低位
res[i + j] += tmp / 10; //高位
}
}
//去掉前导0
int i = 0;
while(i < m + n - 1 && res[i] == 0)
i++;
string res_out;
for(; i < m + n; i++)
res_out.append(to_string(res[i])); //string类型的append函数
return res_out;
}
};