Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Erstelle 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)));
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler