43. Multiply Strings

来源:互联网 发布:foxit editor mac 编辑:程序博客网 时间:2024/06/06 17:35

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:
- The length of both num1 and num2 is < 110.
- Both num1 and num2 contains only digits 0-9.
- Both num1 and num2 does not contain any leading zero.
- You must not use any built-in BigInteger library or convert the inputs to integer directly.

高精度乘法,注意最后不能输出答案前面的0.

class Solution {public:    string multiply(string num1, string num2) {        int n1[110], n2[110];        int index = 0;        for (int i = num1.size() - 1; i >= 0; i--) {            n1[index++] = num1[i] - '0';        }        index = 0;        for (int i = num2.size() - 1; i >= 0; i--) {            n2[index++] = num2[i] - '0';        }        int ans[1000];        for (int i = 0; i < 1000; i++) ans[i] = 0;        for (int i = 0; i < num1.size(); i++) {            for (int j = 0; j < num2.size(); j++) {                ans[i + j] += n1[i] * n2[j];            }        }        for (int i = 0; i < num1.size() + num2.size(); i++) {            if (ans[i] >= 10) {                ans[i + 1] += ans[i] / 10;                ans[i] = ans[i] % 10;            }        }        string ansStr;        int i;        for (i = num1.size() + num2.size() + 1; i > 0; i--) {            if (ans[i] != 0) break;        }        for (; i >= 0; i--) {            ansStr += ans[i] + '0';        }        return ansStr;    }};