Als twee woorden of zinnen zijn anagrammen , ze delen exact dezelfde set van letters in een andere volgorde . Bijvoorbeeld , "luisteren " en " stille " zijn anagrammen . U kunt een algoritme te maken met orde n log ( n ) efficiëntie die controleert of een lijst met bepaalde woorden zijn anagrammen . Sorteer vervolgens met een O ( n log ( n ) ) sorteervolgorde en gebruik een hash tabel om de resultaten te vergelijken . Instructies 1 Maak een hash tabel die een sleutel en een lijst van waarden die bij elke toets heeft . Te beginnen met het eerste woord ; doorlopen de lijst met woorden kopen van 2 Sorteer de letters in het woord met behulp merge sort , heap sort , binaire boom sorteren of een vergelijkbaar type dat wordt uitgevoerd als O ( n log . ( n ) ) . Vergeet niet dat anagrammen zijn identiek indien gesorteerd . 3 Kijk omhoog de gesorteerde woord in de hash tabel . Voeg de ongesorteerde woord om de waarden die aan de hekje-toets als de sleutel al bestaat . Voeg de gesorteerde woord als een nieuwe hash -toets en de ongesorteerde woord als een waarde gehecht aan de hekje-toets als het hekje niet bestaat . Bijvoorbeeld , gegeven " rat ", " tar " en " kunst " add "kunst" als de hekje-toets en de " rat " als een waarde , voeg " tar " als een waarde " gehecht aan " kunst" en voeg " kunst " als een waarde gehecht aan " art . " 4 verder met elk woord in de lijst . Wanneer u het einde van de lijst bereikt , drukt u elk hekje-toets en de bijbehorende waarden aan de anagrammen gevonden bekijken . 5 tellen de gemaakte vergelijkingen te valideren dat de soort er in " O ( n log ( n ) ) " en dat de vergelijking gebeurt in O ( 1 ) .
|