问题
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
例子
思路
num1=“123” num2=“45”
-
方法1 不可取
num1个num2相加,O(123个45相加) 时间复杂度过大
-
方法2 O(mn) O(m+n)
m=num1.length() n=num2.length()
首先得到的数的最大位数为m+n为【10001000为7位,所以,两个三位数相乘最大为6位】
i,j为num1和num2中的下标
则这两个数的乘积,一个在i+j+1位,一个在i+j【m-1,n-1, m-1+n-1+1=m+n-1, m-1+n-1=m+n-2】
所以乘积+res[i+j+1]【之前的进位】之后的和,个位归于i+j+1,十位归i+j【也加上之前的进位】
代码
//方法1
//方法2
class Solution {
public String multiply(String num1, String num2) {
//避免有"0"的情况