class Solution {
public:
string multiply(string num1, string num2) {
int flag = 0, i, j;
int sum_num = num1.size() + num2.size();
vector<char> vec_c(sum_num,'0');
string num3;
for(i = num1.size()-1; i >= 0; i--){
for(j = num2.size()-1; j >= 0; j--){
int n1 = num1[i] - '0';
int n2 = num2[j] - '0';
int x = n1 * n2 + flag;
vec_c[sum_num - 2 - i - j] = vec_c[sum_num - 2 - i - j] + x % 10;
flag = x / 10;
if(vec_c[sum_num - 2 - i - j] > '9'){
vec_c[sum_num - 2 - i - j] = vec_c[sum_num - 2 - i - j] - 10;
flag++;
}
}
if(flag > 0){
vec_c[sum_num - 2 - i - j] = vec_c[sum_num - 2 - i - j] + flag;
flag = 0;
}
}
while(vec_c.size() > 1 && vec_c.back() == '0'){
vec_c.pop_back();
}
reverse(vec_c.begin(),vec_c.end());
for(char c : vec_c){
num3 += c;
}
return num3;
}
};
Accepted
311/311 cases passed (4 ms)
Your runtime beats 91.78 % of cpp submissions
Your memory usage beats 94.78 % of cpp submissions (6.3 MB)