Torna alle sfide
Facile 0 risolte 0% di accettazione

Sommare i numeri validi

Somma gli elementi che sono numeri interi e ignora tutto il resto, come fa try/except quando gestisce input non valido.

Cosa imparerai

  • Saltare l'input non valido invece di andare in errore
  • Togliere gli spazi prima di convertire un testo in numero
  • Riconoscere un segno facoltativo seguito da cifre

Problema

I dati inseriti dalle persone sono disordinati. Ricevi un elenco di stringhe e devi sommare quelle che sono numeri interi, ignorando il resto invece di andare in errore.

Un elemento conta se, dopo aver rimosso gli spazi all'inizio e alla fine, è un segno opzionale + o - seguito da una o più cifre. Qualsiasi altra cosa (testo vuoto, decimali come "2.5", parole) viene ignorata.

Implementa sum_valid_numbers(values).

Ingresso

values: Gli elementi da leggere.

Uscita

Restituisci la somma dei numeri interi validi (0 se non ce ne sono).

Vincoli

0 ≤ numero di voci ≤ 1,000

Ogni voce ha al massimo 20 caratteri; i numeri validi stanno in un intero a 64 bit

Esempi

Esempio 1
Input:
values = ["10", " 5 ", "abc", "-3"]

Output atteso:
expected = 12
Input:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};

Output atteso:
long long expected = 12;
Input:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};

Output atteso:
long expected = 12;

Spiegazione

"10", " 5 " (gli spazi vengono rimossi) e "-3" sono numeri interi; "abc" viene ignorato. 10 + 5 - 3 = 12.

Esempio 2
Input:
values = ["2.5", "", "seven"]

Output atteso:
expected = 0
Input:
std::vector<std::string> values = {"2.5", "", "seven"};

Output atteso:
long long expected = 0;
Input:
string[] values = new string[] {"2.5", "", "seven"};

Output atteso:
long expected = 0;

Spiegazione

Nessuno degli elementi è un numero intero, quindi la somma è 0.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Togli prima gli spazi, poi decidi se ciò che resta è un intero valido.

Suggerimento 2

Convertire dentro try/except (o controllare i caratteri) ti permette di saltare le voci sbagliate senza fermarti.

Suggerimento 3

Un segno da solo come "+" non è un numero.

Complessità attesa

tempo O(lunghezza totale), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.