43. 字符串相乘
题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
链接 https://leetcode.cn/problems/multiply-strings
个人思路
- 这道题看到比较早,但当时实在无从下手,然后现在偶然点开,看了一下发现可以用编码的方法,把字符串转回数字,这样应该也算满足要求,所以刷题还是有点进步的,以前不会的题现在也可以做了
其中:ord(‘0’) == 48
所以需要减去48
class Solution:
def multiply(self, num1: str, num2: str) -> str:
# 先将字符串按照编码转化为整数
n1,n2 = 0,0
for i,j in enumerate(list(num1)[::-1]):
n1 = n1 + (ord(j)-48)*(10**i)
for i,j in enumerate(list(num2)[::-1]):
n2 = n2 + (ord(j)-48)*(10**i)
return str(n1*n2)
官方思路
- 思路1:做加法
对每次得到的结果进行累加,可以使用「415. 字符串相加」的做法。
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if num1 == "0" or num2 == "0":
return "0"
ans = "0"
m, n = len(num1), len(num2)
for i in range(n - 1, -1, -1):
add =