Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
, also represented as a string.
Example 1:
Input: num1 = "2", num2 = "3" Output: "6"
Example 2:
Input: num1 = "123", num2 = "456" Output: "56088"
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contain only digits0-9
. - Both
num1
andnum2
do not contain any leading zero, except the number 0 itself. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
class Solution {
public:string multiply(string num1, string num2) {
// 0 1 2 3 4
// 2 3 4 3 2 百 十 个
int s1 = num1.size();
int s2 = num2.size();
int s3 = s1+s2;
vector<int> ivec(s3,0);
for(int i=s1-1;i>=0;--i){
for(int j=s2-1;j>=0;--j){
ivec[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');
}
}
int carry=0;
// 进位 从个位开始
for(int i=s3-1;i>=0;--i){
ivec[i]+=carry;
carry=ivec[i]/10;
ivec[i]=ivec[i]%10;
}
// 开始位置
int index=0;
for(;index<s3;++index){
if(ivec[index]!=0){
break;
}
}
if(index==s3){ // 全是0 的时候想成
return "0";
}
string res;
for(int i=index;i<s3;++i){
res.push_back(ivec[i]+'0');
}
return res;
}
};