zoukankan      html  css  js  c++  java
  • 【leetcode】Multiply Strings

    Multiply Strings

    Given two numbers represented as strings, return multiplication of the numbers as a string.

    Note: The numbers can be arbitrarily large and are non-negative.

     
     
    各个位相乘,保存在数组中,最后再处理进位。
    123*456
     
      4,5,6
         8,10,12
            12,15,18
    ________________
       4,13,28,27,18
     
    即56088
     
     1 class Solution {
     2 public:
     3     string multiply(string num1, string num2) {
     4        
     5         if(num1=="0"||num2=="0") return "0";
     6        
     7         while(num1[0]=='0') num1.erase(0);
     8         while(num2[0]=='0') num2.erase(0);
     9        
    10         int n1=num1.size();
    11         int n2=num2.size();
    12        
    13         int *numArr1=new int[n1];
    14         int *numArr2=new int[n2];
    15        
    16         int *result=new int[n1+n2];
    17         memset(result,0,sizeof(int)*(n1+n2));
    18         for(int i=0;i<n1;i++) numArr1[i]=num1[i]-'0';
    19         for(int i=0;i<n2;i++) numArr2[i]=num2[i]-'0';
    20        
    21         for(int i=0;i<n1;i++)
    22         {
    23             for(int j=0;j<n2;j++)
    24             {
    25                 result[i+j+1]+=numArr1[i]*numArr2[j];
    26             }
    27         }
    28        
    29         int carry=0;
    30         for(int i=n1+n2-1;i>=0;i--)
    31         {
    32             result[i]+=carry;
    33             if(result[i]>=10)
    34             {
    35                 carry=result[i]/10;
    36                 result[i]=result[i]%10;
    37             }
    38             else
    39             {
    40                 carry=0;
    41             }
    42         }
    43        
    44         string resultStr;
    45         int k=0;
    46         while(result[k]==0) k++;
    47        
    48         for(int i=k;i<n1+n2;i++)
    49         {
    50             resultStr.push_back(result[i]+'0');
    51         }
    52        
    53         return resultStr;
    54     }
    55 };
  • 相关阅读:
    嘀嘀咕 (1)
    碎碎念(4)
    渲染层错误] TypeError: Cannot read property 'replace' of undefined at rewrit
    怎么跳出foreach
    vs code的Go Live不出现
    ES6
    h5分享到微信,分享到朋友圈
    网页之间传值与获取值
    原生js添加节点的高级简便写法
    原型链
  • 原文地址:https://www.cnblogs.com/reachteam/p/4217064.html
Copyright © 2011-2022 走看看