class Solution {
public String multiply(String num1, String num2) {
if (num1.startsWith("0") || num2.startsWith("0")) {
return "0";
}
int len1 = num1.length();
int len2 = num2.length();
int temp = 0;
int result[] = new int[len1 + len2];
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
temp = (num1.charAt(len1 - 1 - i) - '0')
* (num2.charAt(len2 - 1 - j) - '0');
result[j + i] = result[j + i] + temp;
}
}
for (int i = 0; i < result.length; i++) {
if (result[i]/10>0) {
result[i+1]=result[i+1]+result[i]/10;
}
result[i]=result[i]%10;
}
StringBuffer stringBuffer = new StringBuffer();
boolean flag = true;
for (int i = result.length - 1; i >= 0; i--) {
if (flag && result[i] == 0) {
continue;
}
flag = false;
stringBuffer.append(result[i]);
}
return stringBuffer.toString();
}
}
执行用时:3 ms
内存消耗:39.7 MB
主要想法:
先计算后进位