题意就是给你两个字符串型的数字,给这两个数字做乘法。
如果直接转换成Integer做乘法就会溢出。
所以要一步一步来。
先给出代码:
public class Solution {
public String multiply(String num1, String num2) {
int m=num1.length();
int n=num2.length();
int[] pos=new int[m+n];
for(int i=m-1;i>=0;i--){
for(int j=n-1;j>=0;j--){
int multi=(num1.charAt(i)-'0')*(num2.charAt(j)-'0');
int p1=i+j;
int p2=i+j+1;
int sum=multi+pos[p2];
pos[p1]+=sum/10;
pos[p2]=sum%10;
}
}
StringBuilder ans = new StringBuilder();
for(int p:pos){
if(!(p==0 && ans.length()==0))//清除结果最前面的0
ans.append(p);
}
return ans.length()==0?"0":ans.toString();
}
}
p2记录当前运算的最后一位,p1记录当前运算的第一位
每次运算都是两位数
sum=当前运算乘积+上一次运算的前一位(也就是这次运算最后一位)
这次运算的前一位=上次运算是否有同一index的值+sum/10
这次运算的后一位=sum%10