1 public class Solution {
2 public String multiply(String num1, String num2) {
3 if (num1.equals("0") || num2.equals("0")) return "0";
4 num1 = new StringBuilder(num1).reverse().toString();
5 num2 = new StringBuilder(num2).reverse().toString();
6 int[] result = new int[num1.length()+num2.length()];
7 for (int i=0; i<num1.length(); i++) {
8 int bit1 = num1.charAt(i)-'0';
9 for (int j=0; j<num2.length(); j++) {
10 result[i+j] += bit1 * (num2.charAt(j)-'0');
11 }
12 }
13
14 String s = "";
15 for (int i=0; i < result.length; i++) {
16 int digit = result[i] % 10;
17 int carry = result[i] / 10;
18 s = Integer.toString(digit) + s;
19 if (i < result.length-1)
20 result[i+1] += carry;
21 }
22
23 int i=0;
24 while(s.charAt(i) == '0') i++;
25
26 return s.substring(i);
27 }
28 }