标签:结果 style solution code 相加 += 申请 计算 不能
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
说明:
num1
和 num2
的长度小于110。num1
和 num2
只包含数字 0-9
。num1
和 num2
均不以零开头,除非是数字 0 本身。
根据数字乘法的计算规则,从一个数个位开始依次求出与另一个数的乘积并逐位相加。下面以“98”和“99”的乘法计算来说明算法思想。
计算完结果后要判断输出的总位数,因为可能出现结果字符串前几位都是0的情况,找到第一位不是0的数字然后返回之后的字符串。
1 class Solution { 2 public: 3 string multiply(string num1, string num2) { 4 int l1=num1.size(),l2=num2.size(); 5 string res(l1+l2,‘0‘); 6 if(l1==0||l2==0) 7 return ""; 8 for(int i=l1-1;i>=0;i--){ 9 int add=0; 10 for(int j=l2-1;j>=0;j--){ 11 int mul=(num1[i]-‘0‘)*(num2[j]-‘0‘); 12 int sum=res[i+j+1]+add+mul%10-‘0‘; 13 res[i+j+1]=‘0‘+sum%10; 14 add=mul/10+sum/10; 15 } 16 res[i]+=add; 17 } 18 for(int i=0;i<l1+l2;i++) 19 if(res[i]!=‘0‘) 20 return res.substr(i); 21 return "0"; 22 } 23 };
LeetCode 43. 字符串相乘(Multiply Strings) 大数乘法
标签:结果 style solution code 相加 += 申请 计算 不能
原文地址:https://www.cnblogs.com/wmx24/p/9064134.html