Leetcode 43. Multiply Strings (Medium) (cpp)
Tag: Math, String
Difficulty: Medium
/*
43. Multiply Strings (Medium)
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note:
The numbers can be arbitrarily large and are non-negative.
Converting the input string to integer is NOT allowed.
You should NOT use internal library such as BigInteger.
*/
class Solution {
public:
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0") {
return "0";
}
int s1 = num1.size() - 1, s2 = num2.size() - 1;
int i = s1 + s2, j = 0, carry = 0;
string res;
while (j <= i) {
for (int k = 0; k <= j; k++) {
if (s1 >= k && s2 >= (j - k)) {
carry += (num1[s1 - k] - '0') * (num2[s2 - (j - k)] - '0');
}
}
res = char(carry % 10 + '0') + res;
carry /= 10;
j++;
}
while (carry) {
res = char(carry % 10 + '0') + res;
carry /= 10;
}
return res;
}
};