Tutte le sfide
Facile 0 risolte 0% di accettazione

Record unici

Rimuovi i record duplicati che sono uguali per valore, mantenendo il primo di ciascuno nell'ordine.

Cosa imparerai

  • Confrontare record in base ai valori
  • Rimuovere i duplicati mantenendo l'ordine
  • Normalizzare i campi togliendo gli spazi

Problema

Le records di C# confrontano per valore: due records sono uguali quando tutti i loro campi sono uguali, anche se sono oggetti diversi. Questo rende facile rimuovere i duplicati.

Ogni record è scritto name,city. Rimuovi gli spazi all'inizio e alla fine di entrambi i campi; dopo il trimming, due record sono uguali quando entrambi i campi corrispondono esattamente (la distinzione tra maiuscole e minuscole conta).

Implementa unique_records(records).

Input

records: I record, in ordine.

Output

Restituisci i record distinti nell'ordine in cui compaiono per la prima volta, scritti name,city con i campi ripuliti.

Vincoli

0 ≤ numero di record ≤ 100,000

Ogni campo ha da 1 a 30 caratteri e nessuna virgola

Esempi

Esempio 1
Input:
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]

Output atteso:
expected = ["Ada,London", "Lin,Hanoi"]
Input:
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};

Output atteso:
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Input:
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};

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

Spiegazione

Dopo il trimming, il terzo record è uguale al primo, quindi viene eliminato: ["Ada,London", "Lin,Hanoi"].

Esempio 2
Input:
records = ["ada,Paris", "Ada,Paris"]

Output atteso:
expected = ["ada,Paris", "Ada,Paris"]
Input:
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};

Output atteso:
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Input:
string[] records = new string[] {"ada,Paris", "Ada,Paris"};

Output atteso:
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};

Spiegazione

La distinzione tra maiuscole e minuscole conta, quindi questi due record sono diversi: ["ada,Paris", "Ada,Paris"].

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Togli gli spazi da entrambi i campi prima di confrontare.

Suggerimento 2

Un set di coppie (name, city) ricorda i record già visti.

Suggerimento 3

Emetti ogni nuovo record la prima volta che compare, nell'ordine di input.

Complessità attesa

tempo O(lunghezza totale), spazio aggiuntivo O(numero di record)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.