<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 multiply(string num1, string num2) {
        vector<string>nums;

        if(num1.size() < num2.size()) swap(num1, num2);

        if(num2 == "0") return "0";

        for(int i=num2.size() - 1; i >=0; --i){
            string temp = string(num2.size() - i -1, '0');
            int overflow = 0;
            for(int j=num1.size() -1 ; j >=0; --j){
                int digit = (num1[j] - '0') * (num2[i] - '0') + overflow;
                temp += digit%10 + '0';
                overflow = digit/10;
            }
            
            if(overflow){
                temp += overflow + '0';
            }

            nums.push_back(temp);
        }

        return sum(nums);
    }

    string sum(vector<string> nums){
        int overflow = 0, current = 0;
        string ans = "";

        for(int j=0; j < nums.back().size(); ++j){
            current = 0;
            for(int i = 0; i<nums.size() ; ++i){
                if(j< nums[i].size()){
                    current += nums[i][j] - '0';
                }else continue;
            }

            current += overflow;
            overflow = current/10;

            ans += (current%10 + '0');
        }

        cout<<overflow<<endl; 

        if(overflow) {
            ans += overflow + '0';
        }

        reverse(ans.begin(), ans.end());

        return ans;
    }
};
12994