Process the strings from right to left. At each position, add the two digits plus any carry from the previous position. The sum can be 0, 1, 2, or 3.
If the sum is 0 or 1, write that digit and carry is 0. If the sum is 2, write 0 and carry is 1. If the sum is 3, write 1 and carry is 1. After processing all digits, if carry is still 1, append it to the result.
Use two pointers starting at the end of each string. Decrement the pointers as you process. When one string runs out, treat its digits as 0. Build the result in reverse, then reverse it at the end.