思路:用笔算的形式就可以了
代码如下:
public class Solution
{
public String multiply(String num1, String num2) {
StringBuilder sb1 = new StringBuilder(num1);
StringBuilder sb2 = new StringBuilder(num2);
sb1.reverse();
sb2.reverse();
StringBuilder ans = new StringBuilder();
for (int i = 0; i < sb1.length() + sb2.length() + 1; i++) {
ans.append('0');
}
int len = 0;
int i = 0, j = 0;
int carry = 0;
for (i = 0; i < sb1.length(); i++) {
carry = 0;
for (j = 0; j < sb2.length(); j++) {
int sum = (sb1.charAt(i) - '0') * (sb2.charAt(j) - '0') + (ans.charAt(i + j) - '0') + carry;
ans.setCharAt(i + j, (char)(sum % 10 + '0'));
carry = sum / 10;
len = Math.max(i + j, len);
}
if (carry != 0) {
ans.setCharAt(i + j , (char)(carry + '0'));
len = Math.max(i + j, len);
}
}
ans = new StringBuilder(ans.reverse());
for (i = 0; i < ans.length() - 1; i++) {
if (ans.charAt(i) != '0') break;
}
return ans.substring(i);
}
}