Given two non-negative integers num1 and num2 represented as strings, return the sum of these two numbers, also as a string. You must not use any built-in BigInteger library.
Simulate grade-school addition from right to left, carrying over.
- Two pointers at end of both strings, carry=0.
- While i>=0 or j>=0 or carry>0: sum = carry + (num1[i] if valid) + (num2[j] if valid).
- Append sum%10, carry = sum/10.
- Reverse result.
- Time Complexity: O(max(M,N))
- Space Complexity: O(max(M,N))