Skip to content

Latest commit

 

History

History
39 lines (37 loc) · 1.01 KB

043.md

File metadata and controls

39 lines (37 loc) · 1.01 KB

43. Multiply Strings

Solution 1

class Solution {
public:
    string multiply(string num1, string num2) {
        if (num1 == "0" || num2 == "0")
            return "0";
        int len1 = num1.length(), len2 = num2.length();
        int ans[len1 + len2];
        for (int i = 0; i < len1 + len2; i++) {
            ans[i] = 0;
        }
        for (int i = 0; i < len1; i++) {
            for (int j = 0; j < len2; j++) {
                ans[i + j] += (num1[len1 - 1 - i] - '0') *
                    (num2[len2 - 1 - j] - '0');
            }
        }
        for (int i = 0; i < len1 + len2 - 1; i++) {
            ans[i + 1] += ans[i] / 10;
            ans[i] %= 10;
        }
        string ret = "";
        bool flag = false;
        for (int i = len1 + len2 - 1; i >= 0; i--) {
            if (flag) {
                ret += (char)('0' + ans[i]);
            } else if (ans[i] != 0) {
                flag = true;
                ret += (char)('0' + ans[i]);
            }
        }
        return ret;
    }
};