Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contains only digits0-9
. - Both
num1
andnum2
does not contain any leading zero. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
第i个数跟第j个数相乘加上resule[i+j+1],得到mul。result[i+j]+=mul/10,result[i+j+1]=mul%10。代码如下:
public class Solution {
public String multiply(String num1, String num2) {
int m = num1.length(), n = num2.length();
int[] pos = new int[m + n];
char[] n1 = num1.toCharArray();
char[] n2 = num2.toCharArray();
for (int i = m - 1; i >= 0; i --) {
for (int j = n - 1; j >= 0; j --) {
int p1 = i + j, p2 = i + j + 1;
int mul = (n1[i] - '0') * (n2[j] - '0') + pos[p2];
pos[p1] += mul / 10;
pos[p2] = mul % 10;
}
}
StringBuilder sb = new StringBuilder();
for (int num: pos) {
if (!(sb.length() == 0 && num == 0)) {
sb.append(num);
}
}
return sb.length() == 0? "0": sb.toString();
}
}