字符串相乘【大数乘法】

43. 字符串相乘

Difficulty: 中等

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

说明:

  1. num1 和 num2 的长度小于110。
  2. num1 和 num2 只包含数字 0-9
  3. num1 和 num2 均不以零开头,除非是数字 0 本身。
  4. 不能使用任何标准库的大数类型(比如 BigInteger)直接将输入转换为整数来处理

Solution

Language: ****

class Solution {
    
    
public:
    string multiply(string num1, string num2) {
    
    
        int size_1 = num1.size(),size_2 = num2.size();
        string res(size_2+size_1,'0');
        for (int i=size_1-1;i>=0;--i) {
    
    
            for (int j = size_2 -1; j>=0;--j) {
    
    
                int _t = res[i+j+1]-'0' + (num2[j]-'0') * (num1[i]-'0');
                //当前位置 + 进位
                res[i+j+1] = _t%10 + '0';
                res[i+j]  += _t/10;
            }
        }
        for (int i=0,n=res.size(); i<n;++i) {
    
    
            if (res[i]!='0') return res.substr(i);
        }

        return {
    
    '0'};
    }
};


猜你喜欢

转载自blog.csdn.net/qq_43923045/article/details/111676217