Day 1.22
字符串相乘
题目
思路
通过模拟竖式进行运算,注意到num1[i]
和 num2[j]
的乘积对应的就是 res[i+j]
和 res[i+j+1]
这两个位置。
代码
class Solution {
public String multiply(String num1, String num2) {
if(num1.equals("0") || num2.equals("0"))return "0";
int m=num1.length();
int n=num2.length();
if(m==0 || n==0)return "0";
int[] res=new int[m+n];//乘的结果不超过m+n位
for(int i=m-1;i>=0;i--){
for(int j=n-1;j>=0;j--){
int mul=(num1.charAt(i)-'0')*(num2.charAt(j)-'0');
int sum=mul+res[i+j+1];
res[i+j+1]=sum%10;
res[i+j]+=sum/10;
}
}
StringBuilder sb=new StringBuilder();
int i=0;
while(res[i]==0){
i++;//排除res前方多余的0
}
while(i<res.length){
sb.append(res[i]);
i++;
}
return sb.toString();
}
}