思路:先每位相乘,之后统一%10进位
例子:123*456
4 5 6
8 10 12
12 15 18
---------------------------------
4 (13) (28) (27)(18)
统一进位:
5 6 0 8 8
最终结果:56088
class Solution { public String multiply(String num1, String num2) { int num1Len = num1.length(),num2Len = num2.length(); int[] res = new int[num1Len+num2Len];//辅助空间 int resSize = num2Len+num1Len-2; for(int i=0;i<num1Len;i++){ for(int j=0;j<num2Len;j++){ //这里i+j相等就是在竖式一列 res[i+j] += (num1.charAt(i) - '0')*(num2.charAt(j) - '0'); } } for(int i=resSize;i>=1;i--){//进位 int tmp = res[i]; res[i] = res[i] % 10; res[i-1] += tmp / 10; } if(res[0] == 0) return "0";//判断乘的结果是否是0 StringBuilder ans = new StringBuilder(""); for(int i=0;i<=resSize;i++){ ans.append(res[i]); } return ans.toString(); } }