Multiply Strings(大数运算)--C++

题目描述: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.

思路分析:这个题就是小学的两个数相乘的题目,需要我们用代码实现出来,其中就需要我们考虑一些特殊情况:例如进位问题
下面我们来举个例子:289*758
这里写图片描述

代码实现如下:

class Solution {
public:
    string multiply(string num1, string num2) 
    {
        int carry=0;
        string result(num1.size()+num2.size(),'0');

        for(int i=num1.size()-1;i>=0;--i)
        {
            int a=num1[i]-'0';
            for(int j=num2.size()-1;j>=0;--j)
            {
                int b=num2[j]-'0';
                int c=result[i+j+1]-'0';
                int v=a*b+c+carry;
                result[i+j+1]=v%10+'0';
                carry=v/10;
            }
            if(carry)
            {
                result[i]=carry+'0';
                carry=0;
            }
        }

        int i=0;
        while(i<result.size() && result[i]=='0')
            i++;
        return i==result.size()?"0":result.substr(i);
    }
};

猜你喜欢

转载自blog.csdn.net/cherrydreamsover/article/details/81088043
今日推荐