Soru
Programcıya, herhangi bir kelime (girilenSayi) veriliyor. Programcıdansa, ilgili kelimenin bir izogram* olup olmadığını bulan ve eğer sonuç doğru ise “Evet, bu bir izogramdır.”, yanlış ise “İzogram değil” yazan bir program oluşturması isteniyor.
İzogram, bir kelimenin içerisinde hiçbir şekilde tekrar etmeyen harflerin bulunması durumudur. Özetle, kelimedeki her harf bir kere kullanılır.
Örnek
Girdi | Çıktı |
---|---|
girilenMetin: Ada | Sonuç: İzogram değil |
girilenMetin: Objektif | Sonuç: Evet, bu bir izogram. |
Çözüm - C#
using System;
using System.Linq;
internal class Program
{
private static void Main(string[] args)
{
string girilenKelime = "flarmoni";
// Girilen kelimeyi (sorun olmaması için) küçük harfe çevir
girilenKelime = girilenKelime.ToLower();
// Kelimenin tam uzunluğunu al
int kelimeUzunluk = girilenKelime.Length;
// Kelime içindeki harfleri tek tek ayırıp, tekrar eden kelimeleri kısa kelimeye ekle (Yaşa Linq!)
string kisaKelime = new string(girilenKelime.Distinct().ToArray());
int kisaKelimeUzunluk = kisaKelime.Length;
// Kısa kelimenin uzunluk sayısı ile kelime uzunluğu aynı değilse izogram değil
if (kelimeUzunluk != kisaKelimeUzunluk)
{
Console.WriteLine("İzogram değil.");
}
else
{
// Kısa kelimenin uzunluk sayısıyla kelime uzunluğu aynı ise izogramdır
Console.WriteLine("Evet, bu bir izogram. ");
}
Console.Read();
}
}
Çözüm - Java
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
String girilenKelime = "flarmoni";
// Girilen kelimeyi (sorun olmaması için) küçük harfe çevir
girilenKelime = girilenKelime.toLowerCase();
// Kelimenin tam uzunluğunu al
int kelimeUzunluk = girilenKelime.length();
// Kelime içindeki harfleri tek tek ayırıp, tekrar eden kelimeleri kısa kelimeye ekle
Set<Character> BenzersizHarfler = new HashSet<>();
for (int i = 0; i < girilenKelime.length(); ++i)
{
BenzersizHarfler.add(girilenKelime.charAt(i));
}
// Kısa kelimenin uzunluk sayısı ile kelime uzunluğu aynı değilse izogram değil
if (kelimeUzunluk != BenzersizHarfler.size())
{
System.out.println("İzogram değil.");
}
else
{
// Kısa kelimenin uzunluk sayısıyla kelime uzunluğu aynı ise izogramdır
System.out.println("Evet, bu bir izogram. ");
}
}
}