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