# Easiest JAVA Solution with Graph Explanation

• Remember how we do multiplication?

Start from right to left, perform multiplication on every pair of digits, and add them together. Let's draw the process! From the following draft, we can immediately conclude:

`num1[i] * num2[j]` will be placed at indices `[i + j`, `i + j + 1]`

Here is my solution. Hope it helps!

public String multiply(String num1, String num2) {
int m = num1.length(), n = num2.length();
int[] pos = new int[m + n];

for(int i = m - 1; i >= 0; i--) {
for(int j = n - 1; j >= 0; j--) {
int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j, p2 = i + j + 1;
int sum = mul + pos[p2];

pos[p1] += sum / 10;
pos[p2] = (sum) % 10;
}
}

StringBuilder sb = new StringBuilder();
for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);
return sb.length() == 0 ? "0" : sb.toString();
}

• big god. please accept my knees

• Neat and thoughtful answer. Voted

• xue xi le, thank you. and i think num1[i] * num2[j] will be placed at indices [i + j, i + j + 1] if and only if we set length of the result string as num1.length() + num2.length()...

• Nice drawing :) very intuitive

• beautiful solution ! pretty 666

• love you, kiss me

• Great solution!

• niubility！jiji fly towards the sky

• I think it might be a problem in

pos[p1] += sum / 10;
pos[p2] = (sum) % 10;

what if pos[p1] == 9 and sum > 10 ?

• Each pos can store a number larger than 10. It will be below 10 in next loop.

• Such a genius@!

• perfect solution!

• The idea to store a number that is >10 in a spot is really brilliant. I was only thinking 0-9.

• very clear! good algorithm! thanks for sharing

• niubility!!!!!!!!!!!!!!!!

• Exactly brilliant idea!

• Nice solution! So brilliant to use [i+j,i+j+1] to store num1[i]*num[j]. Thanks for sharing.

• I am still confused. So how can it prevent the front zero if it has?

• @icezhou0784 It won't matter. Note this line for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);. You can try simulating the appending process when pos starts with 0.

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.