Soru
Programcıya, herhangi bir kelime (girilenYazi) veriliyor. Programcıdansa, yazı içinde hiçbir yerde tekrar etmeyen ilk harfi bulan bir kod yazması isteniyor.
Not: Büyük ve küçük harflerin de aynı olarak kabul edilmekte ve sonuç ekranında bire bir (karakter büyük ise büyük, küçük ise küçük) yazılması gerekmekte.
Not 2: Java kodundaki hata bilgilendirmesi için Beyza B.‘ye teşekkürler.
Örnek
Girdi | Çıktı |
---|---|
girilenKelime: taassup | Sonuç: t (Bir kere var ve en başta) |
girilenKelime: sTreSS | Sonuç: T |
girilenKelime: Genelge | Sonuç: n |
Çözüm - C#
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string girilenYazi = "sTreSS";
string yazininIlkHali = girilenYazi;
// Tüm harfleri önce küçük harflere, sonra tek tek karaktere dönüştür
girilenYazi = girilenYazi.ToLower();
char[] harfler = girilenYazi.ToCharArray();
List<char> harf = new List<char>();
// Harfleri karakter olarak alıp, ayrı ayrı koleksiyona ekle
foreach (char karakter in harfler)
{
// Eğer harf daha önce eklenmemişse ekle
if (!harf.Contains(karakter))
{
harf.Add(karakter);
}
// Daha önce eklenen varsa diziden kaldır (Ekleme yapma)
else
{
harf.Remove(karakter);
}
}
if (harf.Count > 0)
{
// Dizide ilk tekrar etmeyen karakteri al
int yer = girilenYazi.IndexOf(harf[0]);
Console.WriteLine(yazininIlkHali[yer].ToString());
}
Console.Read();
}
}
Çözüm - Java
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
String girilenYazi = "Genelge";
String yazininIlkHali = girilenYazi;
// Tüm harfleri önce küçük harflere, sonra tek tek karaktere dönüştür
girilenYazi = girilenYazi.toLowerCase();
char[] harfler = girilenYazi.toCharArray();
ArrayList<Character> harf = new ArrayList<>();
// Harfleri karakter olarak alıp, ayrı ayrı koleksiyona ekle
for (char karakter : harfler)
{
// Eğer harf daha önce eklenmemişse ekle
if (!harf.contains(karakter))
{
harf.add(karakter);
}
// Daha önce eklenen varsa diziden kaldır (Ekleme yapma)
else
{
harf.remove(Character.valueOf(karakter));
}
}
if (harf.size() > 0)
{
// Dizide ilk tekrar etmeyen karakteri al
Character yer = harf.get(0);
System.out.println(yer);
}
}
}