LeetCode – Multiply Strings (Java)

Given two numbers represented as strings, return multiplication of the numbers as a string.

Analysis

The key to solve this problem is multiplying each digit of the numbers at the corresponding positions and get the sum values at each position. That is how we do multiplication manually.

Java Solution

public String multiply(String num1, String num2) {
    String n1 = new StringBuilder(num1).reverse().toString();
    String n2 = new StringBuilder(num2).reverse().toString();
 
    int[] d = new int[num1.length()+num2.length()];
 
    //multiply each digit and sum at the corresponding positions
    for(int i=0; i<n1.length(); i++){
        for(int j=0; j<n2.length(); j++){
            d[i+j] += (n1.charAt(i)-'0') * (n2.charAt(j)-'0');
        }
    }
 
    StringBuilder sb = new StringBuilder();
 
    //calculate each digit
    for(int i=0; i<d.length; i++){
        int mod = d[i]%10;
        int carry = d[i]/10;
        if(i+1<d.length){
            d[i+1] += carry;
        }
        sb.insert(0, mod);
    }
 
    //remove front 0's
    while(sb.charAt(0) == '0' && sb.length()> 1){
        sb.deleteCharAt(0);
    }
 
    return sb.toString();
}

4 thoughts on “LeetCode – Multiply Strings (Java)”

  1. charAt returns ascii.
    so ‘1’ would return 49 when converted to int.
    n1.charAt(i)-‘0’ essential converts the integer to its ascii and substracts the ascii of ‘0’ i.e. 48 to get that number.
    Ex: 5 to asii is 53
    0 to ascii is 48
    53 – 48 would return 5.
    Alternatively you can substract 48 directly.

Leave a Comment