Add two integer strings using digit-adder
Company: Two Sigma
Role: Data Scientist
Category: Coding & Algorithms
Difficulty: hard
Interview Round: Technical Screen
## Coding Prompt
You are given a helper function:
- `addDigits(a, b) -> (sumDigit, carry)`
- `a` and `b` are **single decimal digits** (characters `'0'`…`'9'` or integers 0…9).
- It returns the **ones digit** of `a + b` and the **carry** (0 or 1).
- Example: `addDigits(7, 8) -> (5, 1)`.
### Task
Implement `addStrings(num1, num2) -> string` that returns the decimal string representing `num1 + num2`.
### Requirements
- `num1` and `num2` are **non-negative integers** represented as strings (no leading `+`/`-`).
- You may **not** convert the entire strings to built-in integer types (assume very long inputs).
- You may only use the provided `addDigits` helper for digit-wise addition.
### Examples
- `addStrings("11", "123") = "134"`
- `addStrings("999", "1") = "1000"`
- `addStrings("0", "0") = "0"`
### Constraints
- Length of each string can be up to at least \(10^5\) characters.
- Time should be linear in the total number of digits.
Quick Answer: This question evaluates proficiency in string-based arithmetic, digit-wise addition, carry propagation, and management of arbitrarily large non-negative integers without converting entire strings to native numeric types.