leetcode:Multiply Strings

来源:互联网 发布:存货毕业设计数据分析 编辑:程序博客网 时间:2024/05/17 08:15

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:        void reverse(string &str)    {        if (str.size() == 0)            return;                    int beginIdx = 0;        int endIdx   = str.size()-1;                while (beginIdx<endIdx)        {            int tmp = str.at(beginIdx);            str[beginIdx] = str[endIdx];            str[endIdx] = tmp;                        beginIdx++;            endIdx--;        }    }    string multiply(string num1, string num2) {                reverse(num1);        reverse(num2);        vector<int> result(num1.size()+num2.size());        int lastPos;                for (int i=0; i<num1.size(); i++)        {            for (int j=0; j<num2.size(); j++)            {                int tmp = (num1[i]-'0') * (num2[j]-'0');                result[i+j] += tmp;            }        }                int carry = 0;        string retValue="";        for (int i=0; i<result.size(); i++)        {            int tmp = result[i]+carry;                    if (tmp >= 10)            {                result[i] = tmp%10;                carry = tmp/10;            }            else            {                result[i] = tmp;                carry = 0;            }                    retValue = (char)(result[i]+'0') + retValue;        }                int i=0;        for (; i<retValue.size(); i++)        {            if (retValue[i] != '0')            {                retValue = retValue.substr(i, retValue.size()-i);                break;            }        }                if (i == retValue.size() && retValue[retValue.size()-1] == '0')            return "0";        else            return retValue;    }};


0 0
原创粉丝点击