Multiply Strings
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.
class Solution {
public:
string multiply(string num1, string num2) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(num1[0]=='0'||num2[0]=='0')
return "0";
string result(num1.size()+num2.size(),'0');
int count=0;
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
for(int i=0;i<num1.size();++i){
if(num1[i]=='0')
++count;
break;
}
num1=num1.substr(count);
int count2=0;
for(int i=0;i<num2.size();++i){
if(num2[i]=='0')
++count2;
break;
}
num2=num2.substr(count2);
count+=count2;
int carry=0;
for(int i=0;i<num1.size();++i){
for(int j=0;j<num2.size();++j){
int tmp=(num1[i]-'0')*(num2[j]-'0')+carry+(result[i+j]-'0');
result[i+j]=tmp%10+'0';
carry=tmp/10;
}
if(carry>0){
result[i+num2.size()]+=carry;
carry=0;
}
}
count2=0;
for(int i=result.size()-1;i>=0;--i){
if(result[i]=='0')
++count2;
else
break;
}
result=result.substr(0,result.size()-count2);
reverse(result.begin(),result.end());
for(int i=0;i<count;++i){
result+='0';
}
return result;
}
};