Mathematik – Mengendifferenz
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 64 von 66.
Die Mengendifferenz-Operation erstellt eine neue Menge mit Elementen, die in der ersten Menge, aber nicht in der zweiten Menge vorhanden sind.
Erstellen Sie zwei HashSets:
HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();Fügen Sie Elemente zu beiden Mengen hinzu:
set1.Add("Apple");
set1.Add("Banana");
set1.Add("Cherry");
set2.Add("Banana");
set2.Add("Kiwi");Berechne die Differenz (Elemente in set1, aber nicht in set2):
HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);Nach der Ausführung des obigen Codes enthält die Differenzmenge:
["Apple", "Cherry"]Aufgabe
EinfachErstelle eine Methode namens GetSetDifference, die zwei HashSets mit Ganzzahlen (set1 und set2) entgegennimmt und ein neues HashSet zurückgibt, das die Mengendifferenz enthält (Elemente in set1, die nicht in set2 enthalten sind).
Probier es selbst
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
class Program {
public static HashSet<int> GetSetDifference(HashSet<int> set1, HashSet<int> set2) {
// Schreibe deinen Code hier
return null;
}
static void Main(string[] args) {
// Lese erste Zeile für erste Menge
string line1 = Console.ReadLine();
HashSet<int> set1 = new HashSet<int>();
// Überprüfe, ob erste Menge im JSON-Array-Format ist
if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]")) {
try {
// Extrahiere Inhalt zwischen eckigen Klammern
string arrayContent = line1.Substring(1, line1.Length - 2);
// Versuche, den JSON-Array-Inhalt zu parsen
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values) {
// Entferne Anführungszeichen falls vorhanden
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 {
// Verarbeite traditionelle leerzeichengetrennte Eingabe für erste Menge
string[] set1Input = line1.Split(' ');
foreach (string item in set1Input) {
if (int.TryParse(item, out int num)) {
set1.Add(num);
}
}
}
// Lese zweite Zeile für zweite Menge
string line2 = Console.ReadLine();
HashSet<int> set2 = new HashSet<int>();
// Überprüfe, ob zweite Menge im JSON-Array-Format ist
if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]")) {
try {
// Extrahiere Inhalt zwischen eckigen Klammern
string arrayContent = line2.Substring(1, line2.Length - 2);
// Versuche, den JSON-Array-Inhalt zu parsen
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values) {
// Entferne Anführungszeichen falls vorhanden
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 {
// Verarbeite traditionelle leerzeichengetrennte Eingabe für zweite Menge
string[] set2Input = line2.Split(' ');
foreach (string item in set2Input) {
if (int.TryParse(item, out int num)) {
set2.Add(num);
}
}
}
HashSet<int> difference = GetSetDifference(set1, set2);
// Gib Ergebnis aus
List<int> sortedResult = new List<int>(difference);
sortedResult.Sort();
foreach (int item in sortedResult) {
Console.WriteLine(item);
}
}
}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