您的位置:首页 > 其它

[LeetCode] Multiply Strings

2014-08-20 10:35 225 查看
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) {
string result;
int len1 = num1.size(),len2 = num2.size();
int flag = 0, n=0,num=0;
if(num1=="0" || num2=="0")
return "0";
for(int i=len2-1;i>=0;i--){//for(1)       num2  乘数
int len = result.size();
int k = len-(len2-i);
for(int j= len1-1;j>=0;j--){//for(2)  num1  被乘数
if(i==len2-1){
n = (num1[j]-'0')*(num2[i]-'0')+flag;
flag = (n-n%10)/10;
num  =  n-flag*10;
result.insert(result.begin(),num+'0');
if(j==0 && flag!=0){
result.insert(result.begin(),flag+'0');
flag = 0;
}
}else{
if(k>=0){
n = (num1[j]-'0')*(num2[i]-'0')+flag+(result[k]-'0');
flag = (n-n%10)/10;
num  =  n-flag*10;
result[k] =  num+'0';
if(j==0 && flag!=0){
result.insert(result.begin(),flag+'0');
flag = 0;
}
}else if(k<0){
n = (num1[j]-'0')*(num2[i]-'0')+flag;
flag = (n-n%10)/10;
num  =  n-flag*10;
result.insert(result.begin(),num +'0');
if(j==0 && flag!=0){
result.insert(result.begin(),flag+'0');
flag = 0;
}
}

k--;
}
}//end for(2)
}//end for(1)

return result;
}//end func
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: