input: Write a function to add two large numbers represented as strings. The function should properly handle carry and return the sum as a string.
  assert add_large_numbers("111", "1337")=="1448"
  assert add_large_numbers("0", "0")=="0"
  assert add_large_numbers("999", "1")=="1000"
  assert add_large_numbers("55555", "44444")=="99999"
  assert add_large_numbers("123456789", "987654321")=="1111111110"
output: def add_large_numbers(num1, num2):
      carry = 0
      result = []
      i, j = len(num1) - 1, len(num2) - 1
      
      while i >= 0 or j >= 0 or carry:
          digit1 = int(num1[i]) if i >= 0 else 0
          digit2 = int(num2[j]) if j >= 0 else 0
          total = digit1 + digit2 + carry
          carry = total // 10
          result.append(str(total % 10))
          i -= 1
          j -= 1
      
      return ''.join(result[::-1])