public
class
Solution {
public
String multiply(String num1, String num2) {
int
len1 = num1.length(), len2 = num2.length();
int
[] mult =
new
int
[len1 + len2 +
1
];
for
(
int
i =
0
; i < len1 + len2 +
1
; ++i)
mult[i] =
0
;
for
(
int
j =
0
; j < len1; ++j){
int
carry =
0
;
int
singledigit = num1.charAt(len1 -
1
- j) -
‘0‘
;
if
(singledigit !=
0
){
for
(
int
k =
0
; k < len2; ++k){
int
product = (num2.charAt(len2 -
1
- k)-
‘0‘
) * singledigit + carry
+ mult[len1 + len2 - j - k];
mult[len1 + len2 -j - k] = product %
10
;
carry = product /
10
;
}
if
(carry !=
0
)
mult[len1 - j] = carry;
}
}
StringBuffer sbf =
new
StringBuffer();
int
start =
0
;
while
((start < len1 + len2 +
1
) && mult[start] ==
0
)
++start;
if
(start < len1 + len2 +
1
){
for
(
int
i = start; i < len1 + len2 +
1
; ++i)
sbf.append(mult[i]);
}
else
sbf.append(
‘0‘
);
return
sbf.toString();
}
}