clueless coding // TODO: be smarter

LeetCode Add Strings: Java Solution



Problem Statement


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

The value of each number is < 5100.

Num1 and num2 only contain 0-9 as digits.

Both num1 and num2 does not contain any leading zero.

You must not use any built-in BigInteger library or convert the inputs to integer directly.

Function Signature (Java):
  String addStrings(String num1, String num2)

Inputs:
  num1 = "10"
  num2 = "198"

Outputs:
  "208"



TL;DR Code Solution


public String addStrings(String num1, String num2) {

    StringBuilder sb = new StringBuilder();
    int carry = 0;

    for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){
        int x = i < 0 ? 0 : num1.charAt(i) - '0';
        int y = j < 0 ? 0 : num2.charAt(j) - '0';
        sb.append((x + y + carry) % 10);
        carry = (x + y + carry) / 10;
    }

    return sb.reverse().toString();

}