Önceki yazım için bkz: C# Dizi Elemanlarının Toplamı Nasıl Bulunur?
Bu gece paylaşmak istediğim ikinci dizi problemi ise, bir dizide her bir elemanın kaç kere tekrarlandığını bulmak. Alternatif yollar geliştirmek her zaman olduğu gibi yine mümkün olsa da iki farklı örnek üzerinden farklı çözümleri paylaşıyorum.
Örnek 1: {1, 2, 1, 6, 1, 7} dizisinde her bir sayının kaç kere tekrar ettiğini bulun.
Çözüm:
Dictionary<int, int> Dsayilar = sayilar
.GroupBy(item => item)
.ToDictionary(item => item.Key, item => item.Count());
foreach (KeyValuePair<int, int> sayi in Dsayilar)
{
Console.WriteLine("{0} sayısı {1} kere tekrar etmiştir", sayi.Key, sayi.Value);
}
Çıktı:
1 sayısı 3 kere tekrar etmiştir
2 sayısı 1 kere tekrar etmiştir
6 sayısı 1 kere tekrar etmiştir
7 sayısı 1 kere tekrar etmiştir
Örnek 2: {"a", "r", "a", "b", "a"} dizisinin içerisinde a karakterinin kaç kere tekrar ettiğini bulun.
Çözüm 1: Tüm harfler için
string[] arabalar = {"a", "r", "a", "b", "a"};
var arbs = arabalar.GroupBy(v => v);
foreach (var a in arbs)
Console.WriteLine("{0} harfi {1} kere tekrar etmektedir", a.Key, a.Count());
Çıktı:
a harfi 3 kere tekrar etmektedir
r harfi 1 kere tekrar etmektedir
b harfi 1 kere tekrar etmektedir
Çözüm 2: Sadece a harfi için
string[] arabalar = {"a", "r", "a", "b", "a"};
int sayi = 0;
foreach (string araba in arabalar)
{
if (araba == "a")
sayi++;
}
System.Console.WriteLine(sayi);
Çıktı: 3
Önceki yazılarımdan bazıları için;
bkz: C# ile iki tarih arasında kaç gün olduğunu bulmak
bkz: C# ile while döngüsü kullanımı ve örnekleri
bkz: C# ile Do While döngüsü kullanımı ve örnekleri
bkz: C# ile iç içe while döngüsü kullanımı ve örnekleri
bkz: C# Sayıları Yuvarlama Seçenekleri
bkz: C# ile 3'e ve 5'e tam olarak bölünebilen sayıları bulmak