input: Write a function to add two large numbers represented as strings. The function should correctly handle the addition of two numbers, regardless of their size, without converting them directly to integers. If the given strings are empty then return "0".
  assert add_large_numbers("111", "1337") == "1448"
  assert add_large_numbers("0", "0") == "0"
  assert add_large_numbers("999", "999") == "1998"
  assert add_large_numbers("", "") == "0"
  assert add_large_numbers("123456789", "987654321") == "1111111110"
output: def add_large_numbers(num1, num2):
      if not num1 and not num2:
          return "0"
      if not num1:
          return num2
      if not num2:
          return num1
      
      carry = 0
      result = []
      len1, len2 = len(num1), len(num2)
      max_len = max(len1, len2)
      
      num1 = num1.zfill(max_len)
      num2 = num2.zfill(max_len)
      
      for i in range(max_len - 1, -1, -1):
          digit_sum = int(num1[i]) + int(num2[i]) + carry
          carry = digit_sum // 10
          result.append(str(digit_sum % 10))
      
      if carry:
          result.append(str(carry))
      
      return ''.join(result[::-1])