给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
**注意:**不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
int数组转字符串
join只能用于 str类型的 数组
1. map
"".join(map(str, arr))
2. 列表推导
"".join([str(x) for x in arr])
思路:
①其中一个数为0,这种情况必须单独处理。
②m*n 的最大位数 是 len(m+n),最小位数是(m+n-1),由9*9 ,1*1 可大致推断。
③multiplyRes[i+j+1] += n1* int(num2[j]) ,为什么是 i+j+1?
答:因为 m-1(个位)和 n-1(个位) 的乘积 放在数组的最后一个位置(m+n-1),正好是i+j+1

算完之后再统一进位。
因为可能第一位是0,所以需单独处理一下,决定开始的idx是第一位还是第二位。
python
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if num1 == '0' or num2 == '0':
return '0'
m,n=len(num1),len(num2)
multiplyRes=[0]*(m+n)
for i in range(m):
n1=int(num1[i])
for j in range(n):
multiplyRes[i+j+1] += n1* int(num2[j])
for i in range(m+n-1,0,-1):
multiplyRes[i-1]+=multiplyRes[i]//10
multiplyRes[i]=multiplyRes[i]%10
idx=0
if multiplyRes[0]==0:
idx=1
return "".join(map(str, multiplyRes[idx:]))