43. Multiply Strings 字符串相乘

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

模拟

小学时学的乘法列竖式,现在用编程语言给抽象出来而已,拿笔算一算就OK。

Code

	def multiply(self, num1: str, num2: str) -> str:
		if num1 == '0' or num2 == '0':
			return '0'

		len1, len2 = len(num1), len(num2)
		ans = [0 for _ in range(230)]
		for i in range(len1):
			for j in range(len2):
				ans[len1 - i + len2 - j - 1] += int(num1[i]) * int(num2[j])
		for i in range(1, len1 + len2 + 1):
			ans[i + 1] += ans[i] // 10
			ans[i] %= 10
		ans[0] = len1 + len2
		while ans[ans[0]] == 0 and ans[0] > 1:
			ans[0] -= 1
		return ''.join(list(map(str, ans[1: ans[0] + 1][::-1])))

你可能感兴趣的:(#,LeetCode)