public class Solution {
public String multiply(String num1, String num2) {
if(num1==null||num1.length()==0){
return num2;
}
if(num2==null||num2.length()==0){
return num1;
}
if(num1.length()==1&&Integer.parseInt(num1)==0){
return "0";
}
if(num2.length()==1&&Integer.parseInt(num2)==0){
return "0";
}
int n1 = num1.length();
int n2 = num2.length();
int arr[] = new int[n1+n2];
int k = n1 + n2 - 2;
for(int i=0;i<n1;i++)
for(int j=0;j<n2;j++){
arr[k-i-j] += (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
}
int carryBit = 0;
for(int i = 0; i < n1+n2; i++)//处理进位
{
arr[i] += carryBit;
carryBit = arr[i] / 10; //计算需要进位
arr[i] %= 10; //该位的取值
}
int i = k+1;
while(arr[i] == 0)i--;//去掉乘积的前导0
if(i < 0)return "0"; //注意乘积为0的特殊情况
StringBuilder res = new StringBuilder();
for(;i>=0;i--){
res.append(arr[i]);
}
return res.toString();
}
}
将两个字符串相乘, 结果保存到字符串中
最新推荐文章于 2020-12-07 14:31:36 发布