代码编织梦想

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

示例 1:

输入: num1 = “2”, num2 = “3”
输出: “6”
示例 2:

输入: num1 = “123”, num2 = “456”
输出: “56088”
说明:

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

class Solution {
public:
string multiply(string num1, string num2) {
    if (num1 == "0" || num2 == "0")
	{
		return "0";
	}
	int i, j;
	char resultString[220];
	memset(resultString, '0', 220);
	string result;
	int num1Size = num1.size();
	int num2Size = num2.size();

	reverse(num1.begin(), num1.end());
	reverse(num2.begin(), num2.end());
	int index;

	for (i = 0; i < num1Size; ++i)
	{
		int add = 0;
		char num1element = num1[i];

		for (j = 0; j < num2Size; ++j)
		{
			char num2element = num2[j];
			int multResult = (num1element - 48)*(num2element - 48) + (resultString[i + j] - 48) + add;
			add = multResult / 10;
			resultString[i + j] = (multResult % 10) + 48;
		}

		index = i + num2Size;
		while (add > 0)
		{
			resultString[index] = (add % 10) + 48;
			add /= 10;
			++index;
		}
	}
	resultString[index] = '\0';

	result = resultString;
	reverse(result.begin(), result.end());

	return result;
}
};

运行结果:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/fangwei1993/article/details/106670462