Problema
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
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"].
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.