码迷,mamicode.com
首页 > 其他好文 > 详细

43. Multiply Strings

时间:2019-08-07 00:00:03      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:一个   改变   turn   color   pre   span   erase   ret   while   

 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],因为有进位

43. Multiply Strings

标签:一个   改变   turn   color   pre   span   erase   ret   while   

原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/11312631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!