Tous les défis
Facile 0 résolus 0 % de réussite

Enregistrements uniques

Supprimez les enregistrements dupliqués qui sont égaux par valeur, en conservant le premier de chacun dans l'ordre.

Ce que vous allez apprendre

  • Comparer des records par leurs valeurs
  • Supprimer les doublons en gardant l'ordre
  • Normaliser les champs en retirant les espaces

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

Exemple 1
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"].

Exemple 2
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.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.