给定两个以字符串形式表示的非负整数 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; } };
原文地址:https://www.cnblogs.com/jkzr/p/10621843.html
时间: 2024-09-28 09:04:40