Program Java pentru a verifica dacă două șiruri sunt anagrame | Program Anagramă

Publicat: 2021-07-23

Cuprins

Fapte mai puțin cunoscute despre Java

Fiind unul dintre cele mai durabile limbaje de programare, Java este folosit pe tot globul datorită caracteristicilor sale robuste și flexibile. Stabilitatea și versatilitatea Java l-au făcut unul dintre cele mai căutate limbaje de programare. Cu toate acestea, există câteva fapte mai puțin cunoscute despre acest limbaj de programare securizat. Să facem cunoștință cu câteva dintre ele.

  • Oak este numele original al Java.
  • Puteți câștiga mult în timp ce învățați acest limbaj de programare.
  • Java este al doilea cel mai populat limbaj de programare din lume, primul fiind C.
  • Aproximativ 3 miliarde de dispozitive din întreaga lume lucrează pe Java.
  • Java este un limbaj de programare sensibil la majuscule și minuscule. adică, „Final” și „final” nu sunt aceleași în codul Java. Citiți mai multe despre de ce java este atât de popular printre dezvoltatori.

O privire de ansamblu asupra anagramei

Dacă un șir este transformat într-un alt șir prin rearanjarea caracterelor sale, atunci se spune că cele două șiruri sunt anagramele unul celuilalt. Cu toate acestea, numărul de caractere din șirul inițial și șirul obținut ar trebui să fie același. Pentru a înțelege mai bine conceptul de anagramă, să luăm în considerare două șiruri, „zeu” și „câine”.

Șirurile „dumnezeu” și „câine” sunt anagrame unul cu celălalt, deoarece primul șir poate fi rearanjat pentru a obține pe cel din urmă doar prin schimbarea pozițiilor caracterelor „d” și „g”. Pentru oricare două șiruri de caractere de intrare, frecvența fiecărui caracter este calculată pentru a verifica dacă șirurile sunt anagrame unul cu celălalt sau nu. Deci, o anagramă a unui șir poate fi definită ca orice alt șir care are aceleași caractere cu aceeași frecvență ca și în șirul de intrare în orice secvență.

Algoritm pentru programul Anagram în Java

Pasul 1: Definiți cele două șiruri de intrare.

Pasul 2: Se determină lungimea fiecărui șir. Șirurile de intrare nu sunt anagrame între ele dacă au lungimi diferite de șir.

Pasul 3: Dacă șirurile au aceeași lungime, caracterele șirurile sunt convertite în litere mici pentru a asigura o comparație mai ușoară.

Pasul 4: șirurile de caractere sunt fie sortate după funcții încorporate, fie convertite într-o matrice de caractere și apoi sortate.

Pasul 5: Matricea sortată de caractere este verificată pentru egalitate.

Implementarea programului Anagram în Java

Există mai multe soluții pentru a implementa un cod pentru a afla dacă două șiruri sunt anagrame sau nu. Pentru fiecare soluție discutată în secțiunile ulterioare, Pasul 2 al algoritmului descris mai sus formează baza și facilitează ieșirea timpurie dacă lungimile șirurilor nu se potrivesc. În secțiunile următoare, să înțelegem mai multe despre diferitele tipuri de scriere a unui cod pentru logica anagramei.

Abordarea sortării

Caracterele fiecărui șir de intrare pot fi sortate pentru a obține două matrice de caractere normalizate. Dacă tablourile normalizate ale ambelor șiruri de intrare sunt aceleași, atunci șirurile sunt considerate a fi anagrame unele ale altora și invers.

Înțelegerea și implementarea acestui cod sunt mai ușoare. Complexitatea de timp a soluției de mai sus este O(n log n) și este necesar spațiu suplimentar pentru a stoca matricele de caractere ale șirurilor de intrare.

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Abordarea de numărare a implementării logicii anagramei

În această abordare, se măsoară numărul de existențe ale fiecărui caracter din cele două șiruri de caractere de intrare. Dacă frecvența fiecărui caracter din ambele șiruri este identică, șirurile sunt anagrame unul cu celălalt.

Să construim o singură histogramă pentru a salva ceva memorie. În primul șir, numărătoarea fiecărui caracter este incrementată, în timp ce numărătoarea este decrementată pentru al doilea. Dacă rezultatul final echilibrează totul la zero, atunci șirurile sunt anagrame.

Această soluție se execută mai rapid decât soluția anterioară și complexitatea sa de timp este O(n). Cu toate acestea, este necesar spațiu suplimentar pentru a număra caracterele. Această soluție este practic eficientă doar pentru șiruri cu un interval mai mic de caractere. Un alt fapt despre această soluție este că folosește un număr limitat de funcții Java încorporate și astfel crește lungimea codului.

Checkout: Idei și subiecte de proiecte Java

Determinați Anagramele verificând cu MultiSet

Utilizarea MultiSet, o colecție care ajută la compararea independentă de ordine cu elemente identice, simplifică procesul de numărare și comparare în această soluție.

Fiecare șir de intrare este inițial convertit într-un MultiSet de caractere și apoi verificat pentru paritate.

Complexitatea de timp a acestei soluții este O(n). Este similar cu metoda de numărare pentru a determina anagrame. Cu toate acestea, poate funcționa eficient pentru șiruri de lungimi mai mari. De asemenea, codarea implică un număr mai mare de funcții Java Library.

Abordare bazată pe litere pentru determinarea anagramelor

Toate soluțiile discutate până acum consideră și caracterele de punctuație ca parte a șirului. În plus, aceste soluții sunt sensibile la majuscule și minuscule. Abordarea bazată pe litere implementează un cod pentru a verifica șirurile de intrare pe baza definiției lingvistice a anagramelor. În această abordare, spațiile albe și semnele de punctuație nu sunt considerate ca parte a șirului de intrare.

Pasul inițial în implementarea unei soluții bazate pe litere este eliminarea caracterelor nedorite și conversia tuturor caracterelor valide în litere mici. După acest pas, oricare dintre implementările discutate mai sus poate fi folosită pentru a verifica dacă șirurile sunt anagrame sau nu.

Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea de software full-stack, consultați programul Executive PG în dezvoltare software de la upGrad și IIIT-B – Specializare în dezvoltare full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă. , peste 9 proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Aterizează la locul de muncă visat

Aplicați pentru Programul Executive PG în Dezvoltare software de la IIIT-B