Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Registros únicos

Elimina registros duplicados que sean iguales por valor, conservando el primero de cada uno en orden.

Lo que aprenderás

  • Comparar records por sus valores
  • Quitar duplicados manteniendo el orden
  • Normalizar campos quitando espacios

Problema

Ver original (inglés)

Los records de C# se comparan por valor: dos records son iguales cuando todos sus campos son iguales, aunque sean objetos diferentes. Eso hace que eliminar duplicados sea fácil.

Cada record se escribe name,city. Recorta los espacios alrededor de ambos campos; después de recortar, dos records son iguales cuando ambos campos coinciden exactamente (importa mayúsculas y minúsculas).

Implementa unique_records(records).

Entrada

records: Los registros, en orden.

Salida

Devuelve los registros distintos en el orden en que aparecen por primera vez, escritos name,city con los campos recortados.

Restricciones

0 ≤ número de registros ≤ 100,000

Cada campo tiene de 1 a 30 caracteres y ninguna coma

Ejemplos

Ejemplo 1
Entrada:
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]

Salida esperada:
expected = ["Ada,London", "Lin,Hanoi"]
Entrada:
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};

Salida esperada:
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Entrada:
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};

Salida esperada:
string[] expected = new string[] {"Ada,London", "Lin,Hanoi"};

Explicación

Después de recortar, el tercer registro es igual al primero, así que se descarta: ["Ada,London", "Lin,Hanoi"].

Ejemplo 2
Entrada:
records = ["ada,Paris", "Ada,Paris"]

Salida esperada:
expected = ["ada,Paris", "Ada,Paris"]
Entrada:
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};

Salida esperada:
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Entrada:
string[] records = new string[] {"ada,Paris", "Ada,Paris"};

Salida esperada:
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};

Explicación

Importa mayúsculas y minúsculas, así que estos dos registros son diferentes: ["ada,Paris", "Ada,Paris"].

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Quita los espacios de ambos campos antes de comparar.

Pista 2

Un conjunto de pares (name, city) recuerda los records ya vistos.

Pista 3

Saca cada record nuevo la primera vez que aparece, en el orden de entrada.

Complejidad esperada

tiempo O(longitud total), espacio extra O(número de registros)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.