43. Multiply Strings

Posted 高数考了59

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了43. Multiply Strings相关的知识,希望对你有一定的参考价值。

 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的主要内容,如果未能解决你的问题,请参考以下文章

43. Multiply Strings

#Leetcode# 43. Multiply Strings

Leetcode 43. Multiply Strings

43. Multiply Strings

43. Multiply Strings

LeetCode 43. Multiply Strings