Skip to main content

Add Strings

Problem statement

Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.

You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.

Example 1:

Input: num1 = "11", num2 = "123"Output: "134"

Example 2:

Input: num1 = "456", num2 = "77"Output: "533"

Example 3:

Input: num1 = "0", num2 = "0"Output: "0"

Constraints:

  • 1 <= num1.length, num2.length <= 104
  • num1 and num2 consist of only digits.
  • num1 and num2 don't have any leading zeros except for the zero itself.

My solution

/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let result = ""
let carry = 0;
let num1End = num1.length - 1;
let num2End = num2.length - 1;

while (num1End >= 0 || num2End >= 0) {
let sum = carry + (num1[num1End] - "0" || 0) + (num2[num2End] - "0" || 0);
carry = sum > 9 ? 1 : 0;
sum %= 10;

result = `${sum}` + result;
num1End--;
num2End--;
}

if (carry === 1) {
result = "1" + result;
}

return result;
};