问题提出
#43
字符串相乘
给定两个以字符串形式表示的非负整数
num1
和num2
,返回num1
和num2
的乘积,它们的乘积也表示为字符串形式。示例 :
1
2
3 > 输入: num1 = "123", num2 = "456"
> 输出: "56088"
>
说明:
num1
和num2
的长度小于110。num1
和num2
只包含数字0-9
。num1
和num2
均不以零开头,除非是数字 0 本身。- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
解题思路1
使用常规的竖式计算法:算其中一个数的每位数与另一个数相乘,再将结果进位相加即可。
代码
1 | string multiply(string num1, string num2) { |
解题思路2
上面这种方法有很多重复计算,比如算一位数的乘法和多位数的加法的时候都有进位,而这些进位运算是可以合并的,这样不仅代码简洁,效率也更高。
可以申请一个数组保存未进位中间结果,把进位放在最后来做。
代码
1 | string multiply(string num1, string num2) { |