Mathematik – Vereinigung von HashSets
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 62 von 66.
Die Vereinigungsoperation kombiniert zwei Mengen, um eine neue Menge zu erstellen, die alle Elemente aus beiden Mengen ohne Duplikate enthält.
Erstelle zwei HashSets:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5 };Verwende die Union-Methode, um die Mengen zu kombinieren:
HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);Nach der Ausführung des obigen Codes enthält unionSet:
[1, 2, 3, 4, 5]Beachte, dass das Element 3 im Ergebnis nur einmal vorkommt, da HashSet keine Duplikate zulässt.
Aufgabe
EinfachErstelle eine Methode namens UnionSets, die zwei HashSets von Ganzzahlen als Parameter entgegennimmt und ein neues HashSet zurückgibt, das die Vereinigung beider Mengen enthält.
Das Einlesen der Eingaben und die Ausgabe sind bereits für dich erledigt: Konzentriere dich auf die Implementierung des Methodenkörpers von UnionSets.
Probier es selbst
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
class Program
{
public static HashSet<int> UnionSets(HashSet<int> set1, HashSet<int> set2)
{
// Schreibe deinen Code hier
return null;
}
static void Main(string[] args)
{
// Erste Zeile lesen, um das Format für die erste Menge zu prüfen
string line1 = Console.ReadLine();
HashSet<int> set1 = new HashSet<int>();
// Prüfen, ob die erste Menge im JSON-Array-Format vorliegt
if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]"))
{
try
{
// Inhalt zwischen eckigen Klammern extrahieren
string arrayContent = line1.Substring(1, line1.Length - 2);
// Versuchen, den JSON-Array-Inhalt zu parsen
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Vorhandene Anführungszeichen entfernen
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Als Ganzzahl parsen und zur Menge hinzufügen
if (int.TryParse(cleanValue, out int num))
{
set1.Add(num);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing first set: {ex.Message}");
return;
}
}
else
{
// Traditionelle durch Leerzeichen getrennte Eingabe für die erste Menge verarbeiten
string[] input1 = line1.Split(' ');
foreach (string num in input1)
{
if (int.TryParse(num, out int parsedNum))
{
set1.Add(parsedNum);
}
}
}
// Zweite Zeile lesen, um das Format für die zweite Menge zu prüfen
string line2 = Console.ReadLine();
HashSet<int> set2 = new HashSet<int>();
// Prüfen, ob die zweite Menge im JSON-Array-Format vorliegt
if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]"))
{
try
{
// Inhalt zwischen eckigen Klammern extrahieren
string arrayContent = line2.Substring(1, line2.Length - 2);
// Versuchen, den JSON-Array-Inhalt zu parsen
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Vorhandene Anführungszeichen entfernen
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Als Ganzzahl parsen und zur Menge hinzufügen
if (int.TryParse(cleanValue, out int num))
{
set2.Add(num);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing second set: {ex.Message}");
return;
}
}
else
{
// Traditionelle durch Leerzeichen getrennte Eingabe für die zweite Menge verarbeiten
string[] input2 = line2.Split(' ');
foreach (string num in input2)
{
if (int.TryParse(num, out int parsedNum))
{
set2.Add(parsedNum);
}
}
}
// Vereinigung holen und Ergebnis ausgeben
HashSet<int> unionSet = UnionSets(set1, set2);
Console.WriteLine(string.Join(" ", unionSet.OrderBy(x => x)));
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – Nullsicherheit9HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenPrüfen, ob ein Schlüssel vorhanden istAuf Werte zugreifenDictionaries ändernZusammenfassung – HashMap12HashSet Teil 2
Mathematik – Vereinigung von HashSetsMathematik – Schnittmenge von HashSetMathematik – MengendifferenzMathematik – Symmetrische DifferenzIteration über MengenÜbe selbstständig: Online-C#-Compiler