Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Eindeutige Datensätze

Entferne doppelte Datensätze, die nach Wert gleich sind, und behalte von jedem den ersten in der Reihenfolge.

Das lernst du

  • Records nach ihren Werten vergleichen
  • Duplikate entfernen und die Reihenfolge behalten
  • Felder durch Trimmen vereinheitlichen

Problem

C# records vergleichen nach Wert: Zwei Datensätze sind gleich, wenn alle ihre Felder gleich sind, auch wenn es unterschiedliche Objekte sind. Das macht das Entfernen von Duplikaten einfach.

Jeder Datensatz ist als name,city geschrieben. Entferne Leerzeichen an beiden Feldern; nach dem Trimmen sind zwei Datensätze gleich, wenn beide Felder genau übereinstimmen (Groß-/Kleinschreibung zählt).

Implementiere unique_records(records).

Input

records: Die Datensätze, in Reihenfolge.

Output

Gib die unterschiedlichen Datensätze in der Reihenfolge zurück, in der sie zuerst erscheinen, geschrieben als name,city mit den getrimmten Feldern.

Einschränkungen

0 ≤ Anzahl der Datensätze ≤ 100,000

Jedes Feld hat 1 bis 30 Zeichen und keine Kommas

Beispiele

Beispiel 1
Eingabe:
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]

Erwartete Ausgabe:
expected = ["Ada,London", "Lin,Hanoi"]
Eingabe:
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};

Erwartete Ausgabe:
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Eingabe:
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};

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

Erläuterung

Nach dem Trimmen ist der dritte Datensatz gleich dem ersten, also wird er entfernt: ["Ada,London", "Lin,Hanoi"].

Beispiel 2
Eingabe:
records = ["ada,Paris", "Ada,Paris"]

Erwartete Ausgabe:
expected = ["ada,Paris", "Ada,Paris"]
Eingabe:
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};

Erwartete Ausgabe:
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Eingabe:
string[] records = new string[] {"ada,Paris", "Ada,Paris"};

Erwartete Ausgabe:
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};

Erläuterung

Groß-/Kleinschreibung zählt, also sind diese beiden Datensätze unterschiedlich: ["ada,Paris", "Ada,Paris"].

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Trimme beide Felder, bevor du Records vergleichst.

Hinweis 2

Ein Set aus (name, city)-Paaren merkt sich die schon gesehenen Records.

Hinweis 3

Gib jeden neuen Record beim ersten Auftreten in Eingabereihenfolge aus.

Erwartete Komplexität

Zeit O(Gesamtlänge), zusätzlicher Speicher O(Anzahl der Datensätze)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.