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