Problème
Les records C# comparent par valeur : deux records sont égaux lorsque tous leurs champs sont égaux, même s'il s'agit de deux objets différents. Cela rend la suppression des doublons facile.
Chaque record est écrit name,city. Supprimez les espaces autour des deux champs ; après suppression des espaces, deux records sont égaux lorsque les deux champs correspondent exactement (la casse compte).
Implémentez unique_records(records).
Entrée
records: Les enregistrements, dans l'ordre.
Sortie
Retournez les enregistrements distincts dans l'ordre de leur première apparition, écrits name,city avec les champs nettoyés.
Contraintes
0 ≤ nombre d'enregistrements ≤ 100,000
Chaque champ a de 1 à 30 caractères et aucune virgule
Exemples
Entrée :
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]
Sortie attendue :
expected = ["Ada,London", "Lin,Hanoi"]
Entrée :
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};
Sortie attendue :
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Entrée :
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};
Sortie attendue :
string[] expected = new string[] {"Ada,London", "Lin,Hanoi"};
Explication
Après avoir supprimé les espaces, le troisième enregistrement est égal au premier, donc il est supprimé : ["Ada,London", "Lin,Hanoi"].
Entrée :
records = ["ada,Paris", "Ada,Paris"]
Sortie attendue :
expected = ["ada,Paris", "Ada,Paris"]
Entrée :
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};
Sortie attendue :
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Entrée :
string[] records = new string[] {"ada,Paris", "Ada,Paris"};
Sortie attendue :
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};
Explication
La casse compte, donc ces deux enregistrements sont différents : ["ada,Paris", "Ada,Paris"].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Retirez les espaces des deux champs avant de comparer.
Indice 2
Un ensemble de paires (name, city) mémorise les records déjà vus.
Indice 3
Sortez chaque nouveau record à sa première apparition, dans l'ordre d'entrée.
Complexité attendue
temps O(longueur totale), espace supplémentaire O(nombre d'enregistrements)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.