题目
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
说明:
- num1 和 num2 的长度小于110。
- num1 和 num2 只包含数字 0-9。
- num1 和 num2 均不以零开头,除非是数字 0 本身。
- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
思路
乘法常见的思路就是模拟竖式相乘,即将 num1
与 num2
的逐位相乘再累加;
- 起初我的做法就是最原始的竖式相乘,定义一个字符串,每次与
num2
相乘一位就将结果累加,提交通过,耗时 17ms,肯定不是最优方法; - 后面第一次进行优化,定义一个数组,数组的长度为
num1.length+num2.length
(这是一个规律,任何两个数相乘,得到的数位数最大为 l e n 1 + l e n 2 len_1+len_2 len1+