</pre></p><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px; background-color: rgb(199, 237, 204);">Given two numbers represented as strings, return multiplication of the numbers as a string.</p><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px; background-color: rgb(199, 237, 204);">Note: The numbers can be arbitrarily large and are non-negative.</p><pre name="code" class="java">
public class Solution {
public String multiply(String num1, String num2) {
if (num1 == null || num2 == null) {
return null;
}
int length1 = num1.length(), length2 = num2.length();
int length3 = length1 + length2;
int[] num= new int[length3];
int carry, multiply;
int i, j;
for (i = length1 - 1; i >= 0; i--) {
carry = 0;
for (j = length2 - 1; j >= 0; j--) {
multiply = Character.getNumericValue(num1.charAt(i)) *
Character.getNumericValue(num2.charAt(j)) +
carry + num[i + j + 1];
num[i + j + 1] = multiply % 10;
carry = multiply / 10;
}
num[i + j + 1] = carry;
}
StringBuilder sb = new StringBuilder();
i = 0;
while (i < length3 - 1 && num[i] == 0) {//length3 - 1 是为了保证 num = 0000000 能够输出 num = 0
i++;
}
while (i < length3) {
sb.append(num[i++]);
}
return sb.toString();
}
}