您的位置:首页 > 其它

Multiply Strings

2015-08-15 21:52 260 查看
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 plus(string s1,string s2){
int l1=s1.size();
int l2=s2.size();
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
if(l1>=l2){
int bit=0;
string ns="";
for(int i=0;i<l2;i++){
int temp=s1[i]-'0'+s2[i]-'0';
ns+=(temp+bit)%10+'0';
if((temp+bit)>=10)
bit=1;
else
bit=0;
}
for(int j=l2;j<l1;j++){
int temp=s1[j]-'0';
ns+=(temp+bit)%10+'0';
if((temp+bit)>=10)
bit=1;
else
bit=0;
}
if(bit!=0)
ns+=bit+'0';
reverse(ns.begin(),ns.end());
return ns;
}
else
return plus(s2,s1);
}

string cut(string s){
if(s.size()==1)
return s;
if(s[0]=='0')
s=s.substr(1);
else
return s;
return cut(s);
}
string multiply(string num1, string num2){
int l1=num1.size();
int l2=num2.size();
int bit;
vector<string> svec;
int count=0;
for(int i=l2-1;i>=0;i--){
bit=0;
string ns="";
for(int j=l1-1;j>=0;j--){
int temp=(num1[j]-'0')*(num2[i]-'0');
ns+=(temp+bit)%10+'0';
bit=(temp+bit)/10;
}
if(bit!=0)
ns+=bit%10+'0';
reverse(ns.begin(),ns.end());
count++;
for(int n=1;n<count;n++)
ns+='0';
svec.push_back(ns);
}
string ns=svec[0];
for(int i=1;i<svec.size();i++){
ns=plus(svec[i],ns);
}
ns=cut(ns);
return ns;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: