LeetCode每日一题,43. Multiply Strings
先看题目描述
大意是两个大整数以字符串形式给出,让我们返回两数相乘后的结果,要求不能使用大整数类
算法和思路
做加法
这是自己实现的,思路就是模拟竖式乘法,从右往左遍历乘数,将乘数的每一位与被乘数相乘得到对应的结果,再将每次得到的结果累加,在累加时需要注意,乘数除了最低位外,其余每一位的运算结果都需要补 0
做乘法
这是看题解才理解的方法,效率明显优于做加法。由于 num 1和 num 2 的乘积的最大长度为 m+n,因此创建长度为 m+n 的数组 ansArr 用于存储乘积。对于任意 0 ≤ i < m 和 0 ≤ j < n,num1[i] * num2[j] 的结果位于 ansArr[i+j+1],如果 ansArr[i+j+1] ≥ 10,则将进位部分加到 ansArr[i+j]
算法源码
做加法
1 | class Solution { |
做乘法
1 | class Solution { |