算法1
() $O(n1*n2)$
参考大佬写法,
时间复杂度
参考文献
java 代码
class Solution {
public String multiply(String num1, String num2) {
//字符串的长度能到110,而long的长度由64,所以应该是直接用String计算
int n1 = num1.length();
int n2 = num2.length();
int ns1[] = new int[n1];//store A
int ns2[] = new int[n2]; //store B
int res[] = new int[n1+n2];//store answer;
//将字符串变为int数组
for(int i =0;i<n1;i++){
ns1[n1-1-i]=num1.charAt(i)-'0';
}
for(int i = 0;i<n2;i++){
ns2[n2-1-i] =num2.charAt(i)-'0';
}
// System.out.println(ns1[0]+"-"+ns2[0]);
//calculate
for(int i =0;i<n1;i++){
for(int j = 0;j<n2;j++){
res[i+j]+=ns1[i]*ns2[j];//i和j位会贡献到i+j的结果上
res[i+j+1]+=res[i+j]/10;//i+j会有对下一位的进位
res[i+j]=res[i+j]%10;//进位之后结果
}
}
//去掉高位结果中的零
int l =n1+n2-1;
while(l>0&&res[l]==0) l--;
//以字符串的形式输出
String str ="";
for(int i=l;i>=0;i--){
str+=res[i];
}
return str;
}
}