标签:一个 改变 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],因为有进位
标签:一个 改变 turn color pre span erase ret while
原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/11312631.html