<p>Given two non-negative integers <code>num1</code> and <code>num2</code> represented as strings, return the product of <code>num1</code> and <code>num2</code>, also represented as a string.</p>

<p><strong>Note:</strong>&nbsp;You must not use any built-in BigInteger library or convert the inputs to integer directly.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> num1 = "2", num2 = "3"
<strong>Output:</strong> "6"
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> num1 = "123", num2 = "456"
<strong>Output:</strong> "56088"
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= num1.length, num2.length &lt;= 200</code></li>
	<li><code>num1</code> and <code>num2</code> consist of digits only.</li>
	<li>Both <code>num1</code> and <code>num2</code>&nbsp;do not contain any leading zero, except the number <code>0</code> itself.</li>
</ul>

class Solution {
public:
    string find(vector<string> s)
    {
        int sizee=0;
        string res="";
        for(int i=0;i<s.size();i++)
        {
            sizee=max(sizee,static_cast<int>(s[i].size()));
        }
        int sum=0;
        int carry=0;
        for(int i=0;i<sizee;i++)
        {   sum=0;
            
            for(int j=0;j<s.size();j++)
            {
                if(i>=s[j].size())
                {
                    sum+=0;
                }
                else
                {
                    sum+=s[j][s[j].size()-i-1]-'0';
                }
            }
            sum+=carry;
            // cout<<sum<<endl;
            res=to_string(sum%10)+res;
            carry=sum/10;
        }
        if(carry==1)res="1"+res;int i=0;
        while(res[i]=='0')
        {
            i++;
        }
        if(i==res.size())return "0";
        res=res.substr(i);
        return res;
    }
    string multiply(string num1, string num2) {
        int n=num1.size();
        string p="";
        int m=num2.size();
        int i=n-1;
        vector<string> v;
        while(i>=0)
        {   int carry=0;
            int a=num1[i]-'0';
            string s="";
            for(int j=m-1;j>=0;j--)
            {
                int c=(num2[j]-'0')*a+carry;
                carry=c/10;
                int q=c%10;
                s=to_string(q)+s;
            }
            if(carry!=0)
            {
                s=to_string(carry)+s;
            }
            s=s+p;
            p=p+'0';
            // cout<<s<<endl;
            v.push_back(s);
            i--;
        }
        return find(v);
    }
};
31828