İki Dizinin Anagram Olup Olmadığını Kontrol Eden Java Programı | Anagram Programı

Yayınlanan: 2021-07-23

İçindekiler

Java hakkında daha az bilinen gerçekler

En dayanıklı programlama dillerinden biri olan Java, sağlam ve esnek özellikleri nedeniyle dünya çapında kullanılmaktadır. Java'nın kararlılığı ve çok yönlülüğü onu en çok aranan programlama dillerinden biri haline getirdi. Ancak, bu güvenli programlama dili hakkında daha az bilinen birkaç gerçek var. Gelin bunlardan birkaçını tanıyalım.

  • Oak, Java'nın orijinal adıdır.
  • Bu programlama dilini öğrenirken çok şey kazanabilirsiniz.
  • Java, dünyanın en kalabalık ikinci programlama dilidir, ilki C'dir.
  • Dünya genelinde yaklaşık 3 milyar cihaz Java üzerinde çalışıyor.
  • Java, büyük/küçük harf duyarlı bir programlama dilidir. yani, Java kodunda “Final” ve “final” aynı değildir. Java'nın geliştiriciler arasında neden bu kadar popüler olduğu hakkında daha fazla bilgi edinin.

Anagrama Genel Bakış

Bir dizgi, karakterleri yeniden düzenlenerek başka bir dizgeye dönüştürülürse, iki dizgenin birbirinin anagramları olduğu söylenir. Ancak, ilk dizgedeki ve elde edilen dizgideki karakter sayısı aynı olmalıdır. Anagram kavramını daha iyi anlamak için iki diziyi, 'tanrı' ve 'köpek'i ele alalım.

'Tanrı' ve 'köpek' dizeleri birbirlerinin anagramlarıdır çünkü önceki dize yalnızca 'd' ve 'g' karakterlerinin konumlarını değiştirerek ikincisini elde etmek için yeniden düzenlenebilir. Herhangi iki girdi dizisi için, dizilerin birbirinin anagramı olup olmadığını kontrol etmek için her karakterin frekansı hesaplanır. Bu nedenle, bir dizenin anagramı, herhangi bir dizideki giriş dizesiyle aynı sıklıkta aynı karakterlere sahip başka herhangi bir dize olarak tanımlanabilir.

Java'da Anagram Programı için Algoritma

Adım 1: İki giriş dizesini tanımlayın.

Adım 2: Her dizenin uzunluğu belirlenir. Girdi dizileri, farklı dizi uzunluklarına sahiplerse, birbirlerinin anagramları değildir.

Adım 3: Dizeler aynı uzunluktaysa, karşılaştırmayı kolaylaştırmak için dize karakterleri küçük harflere dönüştürülür.

Adım 4: Dize karakterleri ya yerleşik işlevlere göre sıralanır ya da bir karakter dizisine dönüştürülür ve ardından sıralanır.

Adım 5: Sıralanan karakter dizisi eşitlik açısından kontrol edilir.

Java'da Anagram programının uygulanması

İki dizenin anagram olup olmadığını bulmak için bir kod uygulamak için birkaç çözüm vardır. Sonraki bölümlerde tartışılan her çözüm için, yukarıda açıklanan algoritmanın 2. Adımı temeli oluşturur ve dizi uzunlukları eşleşmezse erken çıkışı kolaylaştırır. Sonraki bölümlerde, anagram mantığı için farklı kod yazma türleri hakkında daha fazla bilgi edinelim.

Sıralama Yaklaşımı

Her giriş dizesinin karakterleri, iki normalleştirilmiş karakter dizisi elde etmek için sıralanabilir. Her iki giriş dizisinin normalleştirilmiş dizileri aynıysa, diziler birbirlerinin anagramları olarak kabul edilir ve bunun tersi de geçerlidir.

Bu kodun anlaşılması ve uygulanması daha kolaydır. Yukarıdaki çözümün zaman karmaşıklığı O(n log n)'dir ve giriş dizelerinin karakter dizilerini depolamak için ek alan gerekir.

Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Anagram Mantığını Uygulamaya Yönelik Sayma Yaklaşımı

Bu yaklaşımda, iki girdi dizisindeki her karakterin varlığı ölçülür. Her iki dizideki her karakterin frekansı aynıysa, diziler birbirinin anagramıdır.

Biraz bellekten tasarruf etmek için tek bir histogram oluşturalım. İlk dizgede, her karakterin sayısı artırılırken, ikincisi için sayımlar azaltılır. Nihai sonuç her şeyi sıfıra dengelerse, dizeler anagramdır.

Bu çözüm, önceki çözümden daha hızlı yürütülür ve zaman karmaşıklığı O(n)'dir. Ancak, karakterleri saymak için ek boşluk gerekir. Bu çözüm pratikte yalnızca daha küçük karakter aralığına sahip diziler için etkilidir. Bu çözümle ilgili bir başka gerçek de, sınırlı sayıda yerleşik Java işlevi kullanması ve böylece kodun uzunluğunu artırmasıdır.

Ödeme: Java Projesi Fikirleri ve Konuları

MultiSet ile kontrol ederek Anagramları belirleyin

Aynı elemanlarla siparişten bağımsız karşılaştırmaya yardımcı olan bir koleksiyon olan MultiSet'in kullanımı, bu çözümde sayma ve karşılaştırma sürecini basitleştirir.

Her giriş dizesi başlangıçta bir MultiSet karaktere dönüştürülür ve ardından eşlik için kontrol edilir.

Bu çözümün zaman karmaşıklığı O(n)'dir. Anagramları belirlemek için sayma yaklaşımına benzer. Ancak, daha büyük uzunluktaki diziler için verimli bir şekilde çalışabilir. Ayrıca kodlama, daha fazla sayıda Java Kitaplığı işlevi içerir.

Anagramları Belirlemek İçin Harf Tabanlı Yaklaşım

Şimdiye kadar tartışılan tüm çözümler, noktalama karakterlerini de dizenin bir parçası olarak kabul eder. Ayrıca, bu çözümler büyük/küçük harfe duyarlıdır. Harf tabanlı yaklaşım, anagramların dilsel tanımına dayalı olarak giriş dizelerini kontrol etmek için bir kod uygular. Bu yaklaşımda, beyaz boşluklar ve noktalama işaretleri, giriş dizesinin bir parçası olarak kabul edilmez.

Harf tabanlı bir çözümü uygularken ilk adım, istenmeyen karakterlerin ortadan kaldırılması ve tüm geçerli karakterlerin küçük harflere dönüştürülmesidir. Bu adımdan sonra, dizelerin anagram olup olmadığını kontrol etmek için yukarıda tartışılan uygulamalardan herhangi biri kullanılabilir.

Java, tam yığın yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin Yazılım Geliştirmede Yönetici PG Programına göz atın – Çalışan profesyoneller için tasarlanmış ve 500 saatten fazla zorlu eğitim sunan Tam Yığın Geliştirmede Uzmanlık , 9+ proje ve ödev, IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Hayalinizdeki İşe Yer Açın

IIIT-B'den Yazılım Geliştirmede Yönetici PG Programına Başvurun