(每日一练c++)字符串相乘

字符串相乘

给定两个以字符串形式表示的非负整数 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)直接将输入转换为整数来处理

以下程序实现了这一功能:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
	string multiply(string num1, string num2)
	{
		string res(num1.length() + num2.length(), '0');
		for (int i = num2.length() - 1; i >= 0; i--)
		{
			int j, carry = 0;
			for (j = num1.length() - 1; j >= 0; j--)
			{
				carry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j + 1] - '0');
                res[i + j + 1] = carry % 10 + '0';
                carry /= 10;
			}
			res[i + j + 1] = carry + '0';
		}
		int i;
		for (i = 0; i < res.length() - 1; i++)
		{
			if (res[i] != '0')
			{
				break;
			}
		}
		return res.substr(i);
	}
};