leetcode multiply string

大整数乘法

注意使用额外的空间会超时。

class Solution {
public:
    string multiply(string num1, string num2)
    {
        reverse(num1.begin(),num1.end());
        reverse(num2.begin(),num2.end());
        int l1=num1.size();
        int l2=num2.size();
        string v(l1+l2,'0');
        int s;
        int multi;
        int carry;
        for(int i=0;i<l1;i++)
        {
            s=num1[i]-'0';
            carry=0;
            for(int j=0;j<l2;j++)
            {
                multi=s*(num2[j]-'0')+(v[i+j]-'0')+carry;             
                carry=multi/10;
                v[i+j]=multi%10+'0';              
            }
            v[i+l2]=carry+'0';
        }   
        int i=v.size()-1;
        while(v[i]=='0'&&i>0)i--;       
        v=v.substr(0,i+1);
        reverse(v.begin(),v.end());
        return v;
    }
};
原文地址:https://www.cnblogs.com/tgkx1054/p/3096118.html