您的位置:首页 > 其它

【leetcode】Multiply Strings

2015-05-18 21:35 309 查看

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.

思路:

给定两个字符串的数字,进行相乘,然后输出结果。

这个题目其实就按照乘法的法则一个个数进行相乘,然后累积到res中。由于string的加法还是比较麻烦的,因此先用vector存储临时的结果。

class Solution {
public:
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0") return "0";
string res;
int la=num1.length()-1;
int lb=num2.length()-1;
vector<int> tpres(la+lb+2,0);
int start=la+lb+1;
for(int i=lb;i>=0;i--)
{
int beg=start;
int cur=0;
for(int j=la;j>=0;j--)
{
int tempmul=(int)(num1[j]-'0')*(int)(num2[i]-'0')+cur;
tpres[beg]+=tempmul;
cur=tpres[beg]/10;
tpres[beg]=tpres[beg]%10;
beg--;
}
if(cur!=0)
{
tpres[beg]=cur;
}
start--;//被乘数第二位和乘数相乘的时候,此时获得的数实际上有个10倍的关系
}

if(tpres[0]!=0)
{
res.push_back('0'+tpres[0]);
}
for(int i=1;i<tpres.size();i++)
{
res.push_back('0'+tpres[i]);
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: