Come scrivere un algoritmo di ordine n Lgn per verificare se due parole date sono Anagrammi

May 2

Se due parole o frasi sono anagrammi, condividono la stessa identica serie di lettere in un ordine diverso. Ad esempio, "ascoltare" e "silenziosa" sono anagrammi. È possibile creare un algoritmo di ordine n log (n) di efficienza che controlla per vedere se un elenco di parole date sono anagrammi. Ordina poi con un O (n log (n)) metodo di ordinamento e utilizzare una tabella hash per confrontare i risultati.

istruzione

1 Creare una tabella hash che ha una chiave e un elenco di valori associati a ciascun tasto. Cominciando con la prima parola; scorrere l'elenco di parole.

2 Ordina le lettere della parola utilizzando merge sort, mucchio ordinamento, albero binario di tipo o di una specie simile che funziona come O (n log (n)). Ricordate che anagrammi sono identici quando ordinato.

3 Cercare la parola ordinato nella tabella hash. Aggiungere la parola non differenziati ai valori collegati al tasto cancelletto se la chiave esiste già. Aggiungere la parola ordinato come una nuova chiave hash e la parola non ordinato come valore attaccato alla chiave hash se la chiave hash non esiste. Ad esempio, dato "topo", "tar" e "arte", aggiungere "arte" come chiave hash e "topo" come valore; aggiungere "tar" come valore ", allegate ad" arte "e aggiungere" arte "come valore collegato a" arte ".

4 Continuare con ogni parola nella lista. Quando si raggiunge la fine della lista, stampare ogni tasto cancelletto ei suoi valori associati per visualizzare le anagrammi trovati.

5 Contare le confronti effettuati per verificare che il genere accade in "O (n log (n))" e che il confronto avviene in O (1).