今天继续刷LeetCode,第43题,求两个字符串的乘积。
分析:
根据乘法的步骤,首先计算最后一位与另一个数的乘积,然后加上前一位与另一个数的乘积并乘以10,依次计算。
问题:
1、数与数相乘,会有进位;
2、初始化一个大的空的字符串中,将计算结果放入该字符串中。
3、Python中没有大数计算困难。
附上C++代码:
class Solution {
public:
string multiply(string num1, string num2) {
int l1=num1.size();
int l2=num2.size();
string res(l1+l2,'0');
if(l1==0||l2==0)
return "";
for(int i=l1-1;i>=0;i--)
{
int add=0;
for(int j=l2-1;j>=0;j--)
{
int mul=(num1[i]-'0')*(num2[j]-'0');
int sum=res[i+j+1]+add+mul%10-'0';
res[i+j+1]='0'+sum%10;
add=mul/10+sum/10;
}
res[i]+=add;
}
for(int i=0;i<l1+l2;i++)
if(res[i]!='0')
return res.substr(i);
return "0";
}
};
附上Python代码:
class Solution:
def multiply(self, num1: str, num2: str) -> str:
s1,s2=0,0
for i in num1:
s1=s1*10+(ord(i)-ord("0"))
for j in num2:
s2=s2*10+(ord(j)-ord("0"))
s=s1*s2
return str(s)
139


-43 Multiply strings&spm=1001.2101.3001.11974&articleId=95483132&d=1&t=3&u=7de4ad7c95e14ab4b102d589897763d1)

被折叠的 条评论
为什么被折叠?



