Math - Intersection of HashSet
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 63 / 66.
İki kümenin kesişimi, yalnızca her iki kümede de yer alan öğeleri içerir.
İki HashSet oluşturun:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4, 5 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6, 7 };Kesişimi bulmak için IntersectWith yöntemini kullanın:
set1.IntersectWith(set2);Bu kodu çalıştırdıktan sonra, set1 şunları içerecek:
{ 3, 4, 5 }IntersectWith metodu, çağrıldığı kümeyi değiştirir ve her iki kümede de mevcut olan öğeleri tutar.
Orijinal kümeleri değiştirmeden kesişimi içeren yeni bir küme oluşturmak için şunları yapabilirsiniz:
HashSet<int> intersection = new HashSet<int>(set1);
intersection.IntersectWith(set2);Görev
OrtaFindCommonElements adında iki argüman alan bir metot oluşturun:
- Tamsayılar içeren bir HashSet (set1)
- Tamsayılar içeren bir HashSet (set2)
Metot, her iki kümede de bulunan öğeleri içeren yeni bir HashSet döndürmelidir (kesişim).
Kopya kağıdı
İki kümenin kesişimi, her iki kümede de bulunan öğeleri içerir.
Kesişimi bulmak için IntersectWith yöntemini kullanın:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4, 5 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6, 7 };
set1.IntersectWith(set2); // set1 now contains { 3, 4, 5 }IntersectWith yöntemi orijinal kümeyi değiştirir. Orijinal kümeyi korumak için önce bir kopya oluşturun:
HashSet<int> intersection = new HashSet<int>(set1);
intersection.IntersectWith(set2);Kendin dene
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
class Program {
public static HashSet<int> FindCommonElements(HashSet<int> set1, HashSet<int> set2) {
// Kodu buraya yazın
return null;
}
static void Main(string[] args) {
// İlk küme için ilk satırı oku
string line1 = Console.ReadLine();
HashSet<int> set1 = new HashSet<int>();
// İlk kümenin JSON dizi formatında olup olmadığını kontrol et
if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]")) {
try {
// Köşeli parantezler arasındaki içeriği çıkar
string arrayContent = line1.Substring(1, line1.Length - 2);
// JSON dizi içeriğini ayrıştırmayı dene
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values) {
// Varsa tırnak işaretlerini kaldır
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\"")) {
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Tam sayı olarak ayrıştır ve kümeye ekle
if (int.TryParse(cleanValue, out int num)) {
set1.Add(num);
}
}
}
catch (Exception ex) {
Console.WriteLine($"Error parsing first set: {ex.Message}");
return;
}
}
else {
// İlk küme için geleneksel boşlukla ayrılmış girdiyi işle
string[] input1 = line1.Split();
foreach (string s in input1) {
if (int.TryParse(s, out int num)) {
set1.Add(num);
}
}
}
// İkinci küme için ikinci satırı oku
string line2 = Console.ReadLine();
HashSet<int> set2 = new HashSet<int>();
// İkinci kümenin JSON dizi formatında olup olmadığını kontrol et
if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]")) {
try {
// Köşeli parantezler arasındaki içeriği çıkar
string arrayContent = line2.Substring(1, line2.Length - 2);
// JSON dizi içeriğini ayrıştırmayı dene
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values) {
// Varsa tırnak işaretlerini kaldır
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\"")) {
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Tam sayı olarak ayrıştır ve kümeye ekle
if (int.TryParse(cleanValue, out int num)) {
set2.Add(num);
}
}
}
catch (Exception ex) {
Console.WriteLine($"Error parsing second set: {ex.Message}");
return;
}
}
else {
// İkinci küme için geleneksel boşlukla ayrılmış girdiyi işle
string[] input2 = line2.Split();
foreach (string s in input2) {
if (int.TryParse(s, out int num)) {
set2.Add(num);
}
}
}
// Ortak elemanları bul
HashSet<int> common = FindCommonElements(set1, set2);
// Sonucu yazdır (sıralı)
Console.WriteLine(string.Join(" ", common.OrderBy(x => x)));
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety9HashMap Part 1
What is a HashMap?Declare a HashMapCheck If Key ExistsAccessing ValuesModifying DictionariesRecap - HashMap12HashSet Part 2
Math - Union of HashSetsMath - Intersection of HashSetMath - Set DifferenceMath - Symmetric DifferenceIterating Over Sets