Hvis to ord eller setninger er anagrammer , deler de nøyaktig samme sett av bokstaver i en annen rekkefølge . For eksempel , "lytte" og " silent " er anagrammer . Du kan lage en algoritme med orden n log ( n ) effektivitet som sjekker for å se om en liste over gitte ord er anagrammer . Sorterer deretter med en O (n log ( n ) ) Sorter etter og bruke en hash tabell for å sammenligne resultatene. Instruksjoner
en
Lag en hash tabell som har en nøkkel og en liste over verdier knyttet til hver tast . Fra og med første ordet ; iterere gjennom listen over ord
2
Sorter bokstavene i ordet ved hjelp merge sortere, heap sortere, binært tre slag eller en tilsvarende type som kjører som O ( n log . ( n)) . Husk at anagrams er identiske når sortert.
3
Slå opp den sorterte ordet i hash table . Legg usortert ord til verdiene knyttet til hasj hvis nøkkelen allerede eksisterer. Legg den sorterte ord som en ny hash -tasten og usortert ordet som en verdi knyttet til firkanttasten hvis firkanttasten ikke eksisterer. For eksempel , gitt " rotte ", " tar" og " kunst" legg til " kunst " som firkanttasten og " rotte " som en verdi , legg " tar" som en verdi "knyttet til "kunst" og legge til "kunst" som en verdi knyttet til " kunst".
4
Fortsett med hvert ord i listen. Når du kommer til slutten av listen , skrive ut hver firkanttasten og tilhørende verdier for å vise anagrammer funnet .
5
Tell sammenligninger gjort for å validere at den slags skjer i "O (n log ( n ) ) "og at sammenligningen skjer i O ( 1 ) .