Problema
Los datos que escriben las personas son desordenados. Recibes una lista de cadenas y debes sumar las que sean números enteros, ignorando el resto en lugar de provocar un fallo.
Una entrada cuenta si, después de quitar los espacios al principio y al final, es un signo opcional + o - seguido de uno o más dígitos. Cualquier otra cosa (texto vacío, decimales como "2.5", palabras) se omite.
Implementa sum_valid_numbers(values).
Entrada
values: Las entradas que se deben leer.
Salida
Devuelve la suma de los números enteros válidos (0 si no hay ninguno).
Restricciones
0 ≤ número de entradas ≤ 1,000
Cada entrada tiene como máximo 20 caracteres; los números válidos caben en un entero de 64 bits
Ejemplos
Entrada:
values = ["10", " 5 ", "abc", "-3"]
Salida esperada:
expected = 12
Entrada:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};
Salida esperada:
long long expected = 12;
Entrada:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};
Salida esperada:
long expected = 12;
Explicación
"10", " 5 " (los espacios se quitan) y "-3" son números enteros; "abc" se omite. 10 + 5 - 3 = 12.
Entrada:
values = ["2.5", "", "seven"]
Salida esperada:
expected = 0
Entrada:
std::vector<std::string> values = {"2.5", "", "seven"};
Salida esperada:
long long expected = 0;
Entrada:
string[] values = new string[] {"2.5", "", "seven"};
Salida esperada:
long expected = 0;
Explicación
Ninguna de las entradas es un número entero, así que la suma es 0.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Quita primero los espacios y luego decide si lo que queda es un entero válido.
Pista 2
Convertir dentro de try/except (o revisar los caracteres) te deja saltar entradas malas sin detenerte.
Pista 3
Un signo suelto como "+" no es un número.
Complejidad esperada
tiempo O(longitud total), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.