您的位置:首页 > 其它

LeetCode(43) Multiply Strings

2015-07-23 11:30 330 查看
参考这篇文章,讲的很不错。

[code]class Solution {
public:
    string multiply(string num1, string num2) {

        reverse(num1.begin(), num1.end());
        reverse(num2.begin(), num2.end());

        vector<int> arr(num1.size() + num2.size(), 0);

        for(int i = 0; i < num2.size(); i++) {

            for(int j = 0; j < num1.size(); j++) {

                arr[i + j] += (num2[i] - '0') * (num1[j] - '0');

            }

        }

        int outflow = 0;
        for(int i = 0; i < num1.size() + num2.size(); i++) {

            arr[i] += outflow; 

            outflow = arr[i] / 10;
            arr[i] = arr[i] % 10;

        }

        int pos;
        for(pos = num1.size() + num2.size() - 1; pos >= 0; pos--) {

            if(arr[pos] != 0) {

                pos++;
                break;

            }

        }

        if(-1 == pos)

            return "0";

        vector<int>::iterator iter = arr.begin();
        arr.erase(iter + pos, arr.end());
        reverse(arr.begin(), arr.end());

        string result;
        for(int i = 0; i < arr.size(); i++) {

            result += to_string(arr[i]);

        }

        return result;

    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: