LeetCode 字符串相乘
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
解法:模拟数字乘法。
参照这个图理解一下代码就可以了
class Solution {
public:
string multiply(string num1, string num2) {
if(num1=="0" || num2=="0")
return "0";
int len1=num1.length();int len2=num2.length();
int a[len1+len2];
memset(a,0,sizeof(a));
int flag=0;int t=len1+len2-2;
for(int i=0;i<len1;i++)
for(int j=0;j<len2;j++)
a[t-i-j]+=((num1[i]-'0')*(num2[j]-'0'));
for(int i=0;i<len1+len2;i++)
{
a[i]+=flag;
flag=a[i]/10;
a[i]%=10;
}
int i=len1+len2-1;
while(a[i]==0)
i--;
string ans;
if(i<0)
return "0";
while(i>=0)
ans+=(a[i--]+'0');
return ans;
}
};