Programma Java per verificare se due stringhe sono anagrammi | Programma Anagramma

Pubblicato: 2021-07-23

Sommario

Fatti meno noti su Java

Essendo uno dei linguaggi di programmazione più durevoli, Java è utilizzato in tutto il mondo grazie alle sue caratteristiche robuste e flessibili. La stabilità e la versatilità di Java lo hanno reso uno dei linguaggi di programmazione più ricercati. Tuttavia, ci sono molti fatti meno noti su questo linguaggio di programmazione sicuro. Andiamo a conoscerne alcuni.

  • Oak è il nome originale di Java.
  • Puoi guadagnare molto mentre impari questo linguaggio di programmazione.
  • Java è il secondo linguaggio di programmazione più popoloso al mondo, il primo è il C.
  • Circa 3 miliardi di dispositivi in ​​tutto il mondo funzionano su Java.
  • Java è un linguaggio di programmazione con distinzione tra maiuscole e minuscole. cioè, "Final" e "final" non sono gli stessi nel codice Java. Leggi di più sul motivo per cui java è così popolare tra gli sviluppatori.

Una panoramica di anagramma

Se una stringa viene trasformata in un'altra stringa riorganizzando i suoi caratteri, allora le due stringhe si dicono anagrammi l'una dell'altra. Tuttavia, il numero di caratteri nella stringa iniziale e la stringa ottenuta dovrebbero essere gli stessi. Per comprendere meglio il concetto di anagramma, consideriamo due stringhe, 'dio' e 'cane'.

Le stringhe 'god' e 'dog' sono anagrammi l'una dell'altra perché la prima stringa può essere riorganizzata per ottenere la seconda semplicemente scambiando le posizioni dei caratteri 'd' e 'g'. Per due stringhe di input qualsiasi, viene calcolata la frequenza di ciascun carattere per verificare se le stringhe sono anagrammi l'una dell'altra o meno. Quindi, un anagramma di una stringa può essere definito come qualsiasi altra stringa che ha gli stessi caratteri con la stessa frequenza della stringa di input in qualsiasi sequenza.

Algoritmo per il programma Anagram in Java

Passaggio 1: definire le due stringhe di input.

Passaggio 2: viene determinata la lunghezza di ciascuna stringa. Le stringhe di input non sono anagrammi l'una dell'altra se hanno lunghezze di stringa diverse.

Passaggio 3: se le stringhe hanno la stessa lunghezza, i caratteri della stringa vengono convertiti in lettere minuscole per facilitare il confronto.

Passaggio 4: i caratteri della stringa vengono ordinati in base a funzioni integrate o convertiti in una matrice di caratteri e quindi ordinati.

Passaggio 5: viene verificata l'uguaglianza della matrice di caratteri ordinata.

Implementazione del programma Anagram in Java

Esistono diverse soluzioni per implementare un codice per scoprire se due stringhe sono anagrammi o meno. Per ciascuna soluzione discussa nelle sezioni successive, il passaggio 2 dell'algoritmo sopra descritto costituisce la base e facilita l'uscita anticipata se le lunghezze delle stringhe non corrispondono. Nelle sezioni successive, approfondiremo i diversi tipi di scrittura di un codice per la logica degli anagrammi.

Approccio di smistamento

I caratteri di ciascuna stringa di input possono essere ordinati per ottenere due array di caratteri normalizzati. Se gli array normalizzati di entrambe le stringhe di input sono gli stessi, le stringhe sono considerate anagrammi l'una dell'altra e viceversa.

La comprensione e l'implementazione di questo codice sono più facili. La complessità temporale della soluzione sopra è O(n log n) ed è necessario spazio aggiuntivo per memorizzare gli array di caratteri delle stringhe di input.

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Approccio di conteggio all'implementazione della logica degli anagrammi

In questo approccio, viene misurato il numero di esistenze di ciascun carattere nelle due stringhe di input. Se la frequenza di ogni carattere in entrambe le stringhe è identica, le stringhe sono anagrammi l'una dell'altra.

Costruiamo un singolo istogramma per risparmiare memoria. Nella prima stringa, i conteggi di ogni carattere vengono incrementati, mentre i conteggi vengono decrementati per il secondo. Se il risultato finale bilancia tutto a zero, le stringhe sono anagrammi.

Questa soluzione viene eseguita più velocemente della soluzione precedente e la sua complessità temporale è O(n). Tuttavia, è necessario spazio aggiuntivo per contare i caratteri. Questa soluzione è praticamente efficace solo per stringhe con un intervallo di caratteri più piccolo. Un altro fatto su questa soluzione è che utilizza un numero limitato di funzioni Java integrate e quindi aumenta la lunghezza del codice.

Checkout: idee e argomenti del progetto Java

Determina gli anagrammi controllando con MultiSet

L'uso di MultiSet, una raccolta che aiuta il confronto indipendente dall'ordine con elementi identici, semplifica il processo di conteggio e confronto in questa soluzione.

Ciascuna stringa di input viene inizialmente convertita in un MultiSet di caratteri e quindi verificata per la parità.

La complessità temporale di questa soluzione è O(n). È simile all'approccio di conteggio per determinare gli anagrammi. Tuttavia, può funzionare in modo efficiente per stringhe di lunghezza maggiore. Inoltre, la codifica coinvolge un numero maggiore di funzioni della libreria Java.

Approccio basato sulle lettere per determinare gli anagrammi

Tutte le soluzioni discusse finora considerano i caratteri di punteggiatura anche come parte della stringa. Inoltre, queste soluzioni fanno distinzione tra maiuscole e minuscole. L'approccio basato sulle lettere implementa un codice per controllare le stringhe di input in base alla definizione linguistica degli anagrammi. In questo approccio, gli spazi bianchi e i segni di punteggiatura non vengono considerati come parte della stringa di input.

Il passaggio iniziale durante l'implementazione di una soluzione basata su lettere è l'eliminazione dei caratteri indesiderati e la conversione di tutti i caratteri validi in lettere minuscole. Dopo questo passaggio, è possibile utilizzare una qualsiasi delle implementazioni sopra discusse per verificare se le stringhe sono anagrammi o meno.

Se sei interessato a saperne di più su Java, lo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Software Development - Specializzazione in Full Stack Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa , oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Atterra sul lavoro dei tuoi sogni

Richiedi il programma Executive PG in Software Development da IIIT-B