LeetCode 43题之 Multiply Strings

来源:互联网 发布:python小波变换 编辑:程序博客网 时间:2024/06/06 14:10

详细的算法思路参见我以前的一篇博客:大整数相乘
C++代码:

#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public:    //将原字符处转换成数组存放    vector<int> stoint(const string &s)    {        vector<int> res;        for (int i=s.size()-1;i>=0;--i)        {            res.push_back(s[i]-'0');        }        return res;    }    string multiply(string num1, string num2) {        //如果有一个数为零        if (num1 == "0" || num2 == "0")            return "0";        vector<int> n1 = stoint(num1);        vector<int> n2 = stoint(num2);        vector<int> res(n1.size()+n2.size()-1, 0);        for (int i=0;i<n1.size();++i)        {            for (int j=0;j<n2.size();++j)            {                res[i+j] += n1[i]*n2[j];            }        }        string s_res;        int d = 0;        for (int i=0;i<res.size();++i)        {            //加上低位的进位            res[i] += d;            //保存该位的值            s_res = char(res[i]%10+'0')+s_res;            d = res[i]/10;        }        //如果进位不为零        while (d)        {            s_res = char(d%10+'0')+s_res;            d /= 10;        }        return s_res;    }};int main(){    Solution s;    cout<<s.multiply("66", "999");    return 0;}
0 0
原创粉丝点击