|
1 | 1 | class Solution {
|
2 |
| - public String multiply(String num1, String num2) { |
3 |
| - int m = num1.length(); |
4 |
| - int n = num2.length(); |
5 |
| - int[] ans = new int[m + n]; |
6 |
| - int idx = ans.length - 1; |
| 2 | + public String multiply(String num1, String num2) { |
| 3 | + int[] result = new int[num1.length() + num2.length() + 1]; |
| 4 | + int idx = result.length - 1; |
7 | 5 | for (int i = num1.length() - 1; i >= 0; i--) {
|
8 | 6 | int currIdx = idx;
|
9 | 7 | int carry = 0;
|
10 | 8 | for (int j = num2.length() - 1; j >= 0; j--) {
|
11 |
| - int temp = ( |
12 |
| - ans[currIdx] + Character.getNumericValue(num1.charAt(i)) * Character.getNumericValue(num2.charAt(j)) + carry |
13 |
| - ); |
14 |
| - carry = temp > 9 ? temp / 10 : 0; |
15 |
| - temp = temp > 9 ? temp % 10 : temp; |
16 |
| - ans[currIdx--] = temp; |
| 9 | + int currValue = |
| 10 | + carry + Character.getNumericValue(num1.charAt(i)) * Character.getNumericValue( |
| 11 | + num2.charAt(j)) + result[currIdx]; |
| 12 | + carry = currValue / 10; |
| 13 | + currValue = currValue % 10; |
| 14 | + result[currIdx--] = currValue; |
17 | 15 | }
|
18 | 16 | while (carry > 0) {
|
19 |
| - int temp = ans[currIdx] + carry; |
20 |
| - carry = temp > 9 ? temp / 10 : 0; |
21 |
| - temp = temp > 9 ? temp % 10 : temp; |
22 |
| - ans[currIdx--] = temp; |
| 17 | + int currValue = carry + result[currIdx]; |
| 18 | + carry = currValue / 10; |
| 19 | + currValue = currValue % 10; |
| 20 | + result[currIdx--] = currValue; |
23 | 21 | }
|
24 | 22 | idx--;
|
25 | 23 | }
|
26 |
| - int zeroIdx = 0; |
27 |
| - while (zeroIdx < ans.length && ans[zeroIdx] == 0) { |
28 |
| - zeroIdx++; |
29 |
| - } |
30 | 24 | StringBuilder sb = new StringBuilder();
|
31 |
| - while (zeroIdx < ans.length) { |
32 |
| - sb.append(ans[zeroIdx++]); |
| 25 | + int resultIdx = 0; |
| 26 | + while (resultIdx < result.length && result[resultIdx] == 0) { |
| 27 | + resultIdx++; |
| 28 | + } |
| 29 | + while (resultIdx < result.length) { |
| 30 | + sb.append(result[resultIdx++]); |
33 | 31 | }
|
34 | 32 | return sb.length() == 0 ? "0" : sb.toString();
|
35 | 33 | }
|
|
0 commit comments