Menu
Coddy logo textTech

Math - Union of HashSets

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 62 von 66.

Die Union-Operation kombiniert zwei Mengen, um eine neue Menge zu erstellen, die alle Elemente aus beiden Mengen enthält, ohne Duplikate.

Erstellen Sie zwei HashSets:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5 };

Verwenden Sie 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]

Beachten Sie, dass das Element 3 im Ergebnis nur einmal erscheint, da HashSet keine Duplikate erlaubt.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode namens UnionSets, die zwei HashSets von Ganzzahlen als Parameter annimmt und ein neues HashSet zurückgibt, das die Vereinigung beider Mengen enthält.

Das Lesen der Eingabe und das Drucken der Ausgabe sind bereits für Sie erledigt — konzentrieren Sie sich auf die Implementierung des UnionSets-Methodenkörpers.

Spickzettel

Die Union-Operation kombiniert zwei Mengen, um eine neue Menge zu erstellen, die alle Elemente aus beiden Mengen enthält, ohne Duplikate.

Erstellen Sie zwei HashSets:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5 };

Verwenden Sie die Union-Methode, um die Mengen zu kombinieren:

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

Das Ergebnis enthält alle eindeutigen Elemente aus beiden Mengen. Duplikate werden automatisch entfernt.

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 des ersten Sets zu überprüfen
        string line1 = Console.ReadLine();
        HashSet<int> set1 = new HashSet<int>();
        
        // Überprüfen, ob das erste Set 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);
                
                // JSON-Array-Inhalt parsen versuchen
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Ggf. Anführungszeichen entfernen
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Als Ganzzahl parsen und zum Set 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 leerzeichengetrennte Eingabe für erstes Set 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 des zweiten Sets zu überprüfen
        string line2 = Console.ReadLine();
        HashSet<int> set2 = new HashSet<int>();
        
        // Überprüfen, ob das zweite Set 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);
                
                // JSON-Array-Inhalt parsen versuchen
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Ggf. Anführungszeichen entfernen
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Als Ganzzahl parsen und zum Set 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 leerzeichengetrennte Eingabe für zweites Set verarbeiten
            string[] input2 = line2.Split(' ');
            foreach (string num in input2)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set2.Add(parsedNum);
                }
            }
        }
        
        // Vereinigungsmenge ermitteln 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