leetcode-Multiply Strings

来源:互联网 发布:伦斯勒理工大学知乎 编辑:程序博客网 时间:2024/05/20 20:22

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.

class Solution {public:    string sum(string a, string b)    {        int n = a.size();        int m = b.size();        int i = n-1;        int j = m-1;        int add = 0;        int d;        string s;                while((i > -1)||(j > -1))        {            int d1 = 0;            int d2 = 0;            if(i > -1)d1 = a[i] - '0';            if(j > -1)d2 = b[j] - '0';            d = d1 + d2 + add;                        if(d >= 10)            {                add = 1;                d -= 10;            }            else add = 0;                        string s1;            s1 += ('0' + d);            s.insert(0, s1);            i--;            j--;        }                if(1 == add)s.insert(0, "1");        return s;    }string SingleMutiply(string a, int k){    int n = a.size();    int add = 0;    string s;        for(int i = n-1; i > -1; i--)    {        int d = (a[i] - '0')*k + add;        add = d / 10;        d = d % 10;        string s1;        s1 += ('0' + d);        s.insert(0, s1);    }        if(0 != add)    {        string s1;        s1 += ('0' + add);        s.insert(0, s1);     }        return s;}    string multiply(string num1, string num2) {        int n = num1.size();        int m = num2.size();                if((num1 == "0")||(num2 == "0"))return "0";        string mlt;        for(int i = n-1; i > -1; i--)        {            int k = num1[i] - '0';            string s = SingleMutiply(num2, k);            s.append(n-i-1, '0');            mlt = sum(mlt, s);        }        return mlt;    }};


0 0