Soru
Programcıya herhangi bir şehir (sehir) ismi veriliyor. Sonrasında, yıldız işareti/asteriks (*) kullanarak her bir harfin dizede kaç kez göründüğünü gösteren yeni bir dize döndürmesi isteniyor. Harf ve yıldız belli formatta yazıldıktan sonra, her harf aralığına virgül eklenerek sonuçta gösterilmesi bekleniyor.
Örnek
Girdi | Çıktı |
---|---|
girilenCumle: Ankara | Sonuç: a:***,n:*,k:*,r:* |
girilenCumle: Chicago | Sonuç: c:**,h:*,i:*,a:*,g:*,o:\tc* |
Çözüm - C#
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
string sehir = "Ankara";
// Karakter ve yıldız (Asteriks) değerlerini yazmak için sözlük dizisi oluştur
Dictionary<char, string> degerler = new Dictionary<char, string>();
// Şehir adını küçük harfli ve boşluksuz hale getir
foreach (char harf in sehir.ToLower().Replace(" ", ""))
{
int sayac = 0;
// Tekrar eden harf yoksa sözlüğe ekleme yap
if (!degerler.ContainsKey(harf))
{
sayac = 1;
degerler.Add(harf, sayac.ToString());
}
// Tekrar eden harf varsa sayacı arttır ve o harfin tekrar sayısını güncelle
else
{
sayac++;
degerler[harf] += sayac;
}
}
// Tüm değerleri birleştir
string sonuc = "";
foreach (KeyValuePair<char, string> tek in degerler)
{
sonuc += tek.Key + ":" + tek.Value.Replace("1", "*") + ",";
}
// Sonucun sonunda virgül varsa kırp
Console.WriteLine($"{sonuc.TrimEnd(',')}");
Console.Read();
}
}