Şimdi Ara

java anagram

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
1
Favori
423
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • anagram aynı kelimenin harflerinin yer değiştirmesiymiş. iki string içindeki kelimenin birbirinin anagramı olup olmadığını nasıl kontrol edebiliriz ? düşünemedim yöntemini ben..



  • Yapay Zekanın Yanıtı

    Anagramlar: Kelimeleri Yeniden Düzenlemek

    Bir anagram, bir kelimenin harflerini yeniden düzenleyerek oluşturulan ve farklı bir anlama gelen yeni bir kelimedir. Örneğin, "kitap" kelimesinin anagramı "kapit"tir.

    Anagramlar, kelime oyunları, bulmacalar ve şifrelemede sıklıkla kullanılır. Ayrıca, kelimelerin kökenleri ve ilişkileri hakkında bilgi edinmene yardımcı olabilirler.

    Anagram Örnekleri:

    • Kitap -> Kapit
    • Kalem -> Kemal
    • Masa -> Asma
    • Bilgisayar -> Bircanipas

    Anagramlar oluşturmak için şu adımları izleyebilirsin:

    • Kelimenin harflerini alfabetik olarak sırala.
    • Yeniden düzenleyerek yeni kelimeler oluştur.
    • Yeni kelimelerin anlamlı olup olmadığını kontrol et.

    Anagramlar, kelime dağarcığını geliştirmenin ve dilin nasıl işlediğini anlamanın eğlenceli bir yoludur. Bir dahaki sefere sıkıldığında, kelimelerle oynamayı ve kendi anagramlarını oluşturmayı dene!

    Yapay Zekanın Yanıtını Genişlet
  • Tek loop ile halledilir. Ilk kelimenin 1. Harfi 2. Kelimenin son harfi mi , ilk kelimenin 2. Harfi diger kelimenin son-1 harfi mi .... gibi.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • her iki kelimedeki harfleri sort et, sonra string'ler eşit mi diye kontrol et.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • @Mephalay hocam arkadaş soruyu açıkça sormamış ben wikipediadan baktım "Arrigo Boito" = "Tobia Gorrio" şöyle bir örnek vermişler.

    En güzel çözüm bu mu bilmiyorum, her iki Stringin de içerdiği harfleri ve harflerin sayılarını bulan bir fonksiyon yazarsınız. Bu fonksiyon iki String için de aynı sonucu döndürürse anagramdırlar.

    Ben yazarken bir cevap daha gelmiş, yukarıdaki çözüm daha iyi.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-D639AD061 -- 2 Nisan 2017; 15:45:35 >
  • Evet, dogru soyluyorsun. Anagram denildigi zaman acikcasi ben Edip -> Pide gibi ters kelime oldugunu dusunmustum. Su durumda kelimenin harflerinin de kontrol edilmesi gerekiyor. Sort edip string equal kontrolu yapmak cok mantikli. Diger bir yontem, daha performansli olsa da kodu daha uzun olacak, senin dedigin gibi karakterleri indexliyip karakter sayisi her iki indexte de ayni mi diye kontrol etmek. O(n) olacak bu durumda performans zira. Bir baska pratik yontem de karakterlerin hash degerlerini carpmak olabilir ama cok uzun bir stringde bunun unique olma garantisi yok. Yani "edip" kelimesinin karakterlerinin hash degerlerini carparak elde edecegin X sayisi ile, "pide" kelimesindeki karakterlerin hash degerlerini carpip ayni olup olmadigina bakabilirsin.
    Aklima gelen bir baska yontem de Java'nin replace metodunu kullanarak her karakter icin 2. kelimedeki ayni karakteri empty string ile replace etmek. Sonucta 2. string tamamen empty kaliyorsa anagramdir diyebiliriz. Bu sekilde de tek loop'ta cozulur, O(n) olur complexity si.

    Not: Sort edince nlogn complexity oluyor
    Not2: replaceFirst(char1,"") -> seklinde ilk occurence replace edilebilir.
    not3: uzun string de hash degerleri carpildigi icin a*b = c*d*e seklinde ifade edilebileceginden yanlis sonuc cikabilir.



    < Bu mesaj bu kişi tarafından değiştirildi Mephalay -- 3 Nisan 2017; 23:43:13 >
    < Bu ileti tablet sürüm kullanılarak atıldı >




  • Yapay Zeka’dan İlgili Konular
    SQL ve Python hk.
    geçen yıl açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.