Dün bir String'in harflerinin sadece yer değiştirmesi ile elde edilebilecek String permütasyonları üzerine bir örnek hazırlamıştım. Bugün de bir String (kelime ya da cümle) içinde geçen harflerle oluşturulabilecek farklu sayıda harflerden oluşan String'lerin kombinasyonunu yapan bir java programı hazırlayarak başlayacağız. Örneklerle açıklamaya çalışayım:
Örnek 1:
Baz metin: "kombinasyon"
Test metni: "kamyon"
Sonuç: Doğru -> kamyon kelimesindeki her bir harf, baz metinde de vardır. Dolayısıyla 1. string'in harfleri kullanılarak 2. string elde edilebilir
Örnek 2:
Baz metin: "kombinasyon"
Test metni: "sabun"
Sonuç: Yanlış -> sabun kelimesindeki u harfi baz metinde olmadığı için 1. string'in harfleri kullanılarak 2. string elde edilemez.
Geçelim kodlamaya.
- karakterKontrolu adında bir metod yazalım ve bu test işleminin sağlanması durumunda true, sağlanmaması durumunda false değer döndürsün
- amacımız yazi2 içindeki her bir harfin yazi1 içinde geçtiğinden emin olmak. O zaman teker teker bakalım.
public static void main(String[] args) {
String yazi1 = "kombinasyon";
String yazi2 = "kamyon";
boolean kontrol=karakterKontrolu(yazi1, yazi2);
if (kontrol)
System.out.println(yazi1+" içindeki harfler kullanılarak "+yazi2+" yazısı elde edilebilir");
else
System.out.println(yazi1+" içindeki harfler kullanılarak "+yazi2+" yazısı elde edilemez");
}
public static boolean karakterKontrolu(String yazi1, String yazi2) {
int harfler=yazi2.length();
for (int i = 0; i < yazi2.length(); i++) {
char c = yazi2.charAt(i);
for (int j = 0; j < yazi1.length(); j++) {
if (c == yazi1.charAt(j))
{
harfler--;
break;
}
}
}
if (harfler==0)
return true;
else
return false;
}
Çıktı:
kombinasyon içindeki harfler kullanılarak kamyon yazısı elde edilebilir