1 class Solution {
2 public:
3
4 string multiply(
string num1,
string num2) {
5 if(num1==
"0"||num2==
"0")
6 return "0";
7 int len1=num1.length(),len2=
num2.length();
8 string res(len1+len2,
'0');
9 for(
int i=len1-
1;i>=
0;i--
){
10 int n1=num1[i]-
'0';
11 for(
int j=len2-
1;j>=
0;j--
){
12 int n2=num2[j]-
'0';
13 int sum=(res[i+j+
1]-
'0') + n1*
n2;
14 res[i+j+
1]=sum%
10+
'0';
15 res[i+j] += sum/
10;
16 }
17 }
18 while(res[
0]==
'0')
19 res.erase(res.begin());
20 return res;
21 }
22 };
利用竖式计算的方法
首先,p位数乘以q位数,结果不超过p+q位数,所以新建一个长度为p+q的数组来存放答案
在答案数组中,num1[i]*num2[j]必然改变res[i+j+1],可能改变res[i+j],因为有进位
转载于:https://www.cnblogs.com/zhuangbijingdeboke/p/11312631.html
相关资源:JAVA上百实例源码以及开源项目