Here is a possible solution:

```
def addStrings(num1: str, num2: str) -> str:
    i, j, carry = len(num1) - 1, len(num2) - 1, 0
    res = []
    while i >= 0 or j >= 0 or carry > 0:
        x = int(num1[i]) if i >= 0 else 0
        y = int(num2[j]) if j >= 0 else 0
        carry, digit = divmod(x + y + carry, 10)
        res.append(str(digit))
        i, j = i - 1, j - 1
    return ''.join(res[::-1])
```

This solution uses a two-pointer approach to scan the input strings from right to left, and computes the sum digit by digit, taking into account the carry from previous digits. The result is stored as a list of characters and then converted to a string. Note that we avoid converting the input strings to integers directly, which could lead to overflow errors for large inputs.
Scrivi un programma Python per risolvere: dati due numeri interi non negativi, num1 e num2 rappresentati come stringa, restituisci la somma di num1 e num2 come stringa. È necessario risolvere il problema senza utilizzare alcuna libreria incorporata per la gestione di numeri interi di grandi dimensioni (come BigInteger). Inoltre, non devi convertire direttamente gli input in numeri interi.