43. Multiply Strings

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2,
 also represented as a string.

Example 1:

Input: num1 = "2", num2 = "3"
Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"
Output: "56088"

Note:

    The length of both num1 and num2 is < 110.
    Both num1 and num2 contain only digits 0-9.
    Both num1 and num2 do not contain any leading zero, except the number 0 itself.
    You must not use any built-in BigInteger library or convert the inputs to integer directly.
  • Multiply all pairs of digits, and store the product in an array.
public String multiply(String num1, String num2) {
    int[] result = new int[num1.length()+num2.length()];
    for(int i = num1.length()-1; i >= 0; i--) {
        for(int j = num2.length()-1; j >= 0; j--) {
            result[i+j+1] += (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
        }
    }
    int carry = 0;

    for(int i = result.length-1; i >= 0; i--) {
        int temp = (result[i]+carry) % 10;
        carry = (result[i]+carry) / 10;
        result[i] = temp;
    }
    StringBuilder sb = new StringBuilder();
    for(int d : result)
        if(!(sb.length()==0 && d == 0))
            sb.append(d);
    return sb.length() == 0 ? "0" : sb.toString();
}