Description
- Multiply Strings Medium
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.
Example
-
Example 1:
Input: num1 = “2”, num2 = “3”
Output: “6” -
Example 2:
Input: num1 = “123”, num2 = “456”
Output: “56088” -
Note:
The length of both num1 and num2 is < 110.
Both num1 and num2 contain only digits 0-9.
Both num1 and num2 do not contain any leading zero, except the number 0 itself.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
题意
将两个非负整数数字字符串相乘,以字符串的形式返回其乘积
要求:
- 两个字符串长度都小于110
- 字符串只包含数字0到9
- num1和num2都不包含任何前导零,除了数字0本身
- 不得使用任何内置BigInteger库或直接将输入转换为整数
思路1
其实这题看懂了意思,直接用int和str相互转换即可。
code
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if len(num1)>110 or len(num2)>110:
return
if num1.isdigit() and num2.isdigit():
return str(int(num1) * int(num2))
思路2
按照小学学乘法列竖式计算,注意乘法之间的进位和为0的情况。
code
class Solution:
def multiply(self, num1: str, num2: str) -> str:
res = [0] * (len(num1) + len(num2))
for i in range(len(num1)-1, -1, -1):
for j in range(len(num2)-1, -1, -1):
temp = int(num1[i]) * int(num2[j])
res[i+j+1] += temp % 10
res[i+j] += temp // 10
for i in range(len(res)-1, -1, -1):
if int(res[i]) > 9:
res[i-1] += res[i] // 10
res[i] = res[i] % 10
res = ''.join([str(s) for s in res]).lstrip('0')
if not res:
return '0'
return res
今天端午收假,实验室没人,一个人好自在。
实验室的人越来越少了