字符串相乘

问题陈述

给定两个以字符串形式表示的非负整数 num1num2,返回 num1num2 的乘积,它们的乘积也表示为字符串形式。

思路分析

num1[i]num2[j] 的乘积对应的就是 res[i+j]res[i+j+1] 这两个位置

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution{
public String multiply(String m,String n){
if(m.equals("0")||n.equals("0")) return "0";
int[] res=new int[m.length()+n.length()];//结果位数为m,n长度之和。
for(int i=m.length()-1;i>=0;i--){
int m1=m.charAt(i)-'0';//某数字字符减0字符等于该数字大小
for(int j=n.length()-1;j>=0;j--){
int n1=n.charAt(j)-'0';
int sum=res[i+j+1]+m1*n1;
res[i+j+1]=sum%10;
res[i+j]+=sum/10;
}
}
StringBuilder str=new StringBuilder();
for(int i=0;i<res.length;i++){
if(i==0&&res[i]==0) continue;
str.append(res[i]);
}
return str.toString();
}
}