Multiply two strings with example JAVA, PHP, JS, PYTHON
Given two positive numbers as strings. The numbers may be very large (may not fit in long long int), the task is to find product of these two numbers.

Examples:
Input : num1 = 4154
num2 = 51454
Output : 213739916
Input : num1 = 654154154151454545415415454
num2 = 63516561563156316545145146514654
Output : 41549622603955309777243716069997997007620439937711509062916
The concept is based on elementary school maths.
We begin by multiplying the last digit of the second number by the first number. The second digit of the second number is then multiplied by the first number, and so on. All of these multiplications are added together. We shifted the i-th multiplication when adding.
The strategy employed in the following solution is to keep the result in a single array. In a loop, we go over all of the digits in the first and second numbers and add the result at the proper point.
JAVA
// Java program to multiply two numbers
// represented as Strings.
class GFG
{
// Multiplies str1 and str2, and prints result.
static String multiply(String num1, String num2)
{
int len1 = num1.length();
int len2 = num2.length();
if (len1 == 0 || len2 == 0)
return “0”;
// will keep the result number in vector
// in reverse order
int result[] = new int[len1 + len2];
// Below two indexes are used to
// find positions in result.
int i_n1 = 0;
int i_n2 = 0;
// Go from right to left in num1
for (int i = len1 – 1; i >= 0; i–)
{
int carry = 0;
int n1 = num1.charAt(i) – ‘0’;
// To shift position to left after every
// multipliccharAtion of a digit in num2
i_n2 = 0;
// Go from right to left in num2
for (int j = len2 – 1; j >= 0; j–)
{
// Take current digit of second number
int n2 = num2.charAt(j) – ‘0’;
// Multiply with current digit of first number
// and add result to previously stored result
// charAt current position.
int sum = n1 * n2 + result[i_n1 + i_n2] + carry;
// Carry for next itercharAtion
carry = sum / 10;
// Store result
result[i_n1 + i_n2] = sum % 10;
i_n2++;
}
// store carry in next cell
if (carry > 0)
result[i_n1 + i_n2] += carry;
// To shift position to left after every
// multipliccharAtion of a digit in num1.
i_n1++;
}
// ignore ‘0’s from the right
int i = result.length – 1;
while (i >= 0 && result[i] == 0)
i–;
// If all were ‘0’s – means either both
// or one of num1 or num2 were ‘0’
if (i == -1)
return “0”;
// genercharAte the result String
String s = “”;
while (i >= 0)
s += (result[i–]);
return s;
}
// Driver code
public static void main(String[] args)
{
String str1 = “123542”;
String str2 = “171454”;
if ((str1.charAt(0) == ‘-‘ || str2.charAt(0) == ‘-‘) &&
(str1.charAt(0) != ‘-‘ || str2.charAt(0) != ‘-‘))
System.out.print(“-“);
if (str1.charAt(0) == ‘-‘)
str1 = str1.substring(1);
if (str2.charAt(0) == ‘-‘)
str2 = str2.substring(1);
System.out.println(multiply(str1, str2));
}
}
PHP
<?php
// PHP program to illustrate bcmul() function
// input numbers with arbitrary precision
$num_str1 = “3”;
$num_str2 = “11.222”;
// calculates the multiplication of the two
// numbers when $scaleVal is not specified
$res = bcmul($num_str1, $num_str2);
echo $res;
?>
JS
function multiply(a, b) {
const product = Array(a.length+b.length).fill(0);
for (let i = a.length; i–; null) {
let carry = 0;
for (let j = b.length; j–; null) {
product[1+i+j] += carry + a[i]*b[j];
carry = Math.floor(product[1+i+j] / 10);
product[1+i+j] = product[1+i+j] % 10;
}
product[i] += carry;
}
return product.join(“”).replace(/^0*(\d)/, “$1”);
}
console.log(multiply(“123456789”, “987654321”));
PYTHON
def multiply_two_strings(a,b):
# code here
# return the product string
product = int(a) * int(b)
return(product)
t=int(input(‘Enter the number of pairs to be multiplied: ‘))
for i in range(t):
a,b=input(‘Enter a pair: ‘).split()
print(multiply_two_strings( a.strip() , b.strip() ))