Sistema il tag CODE come ti è già stato suggerito.
Armen ha scritto:
Allora in realtà non so cosa siano le tabelle hash ad ogni modo per il mio livello non credo che si debba risolvere così. Inoltre la mia idea era quella di far scorrere con letter tutte le lettere dell'alfabeto e al contempo scannerizzare la parola.
Faccio un esempio:
Durante la prima iterazione letter si imposta sulla lettera 'a'.
A questo punto la i è 0 che punta la prima cella dell'array.
Inizia la lettura della parola lettera per lettera, quando si incontra un 'a', la prima cella dell'array assume come valore 1. Poi mettiamo caso che incontra un'altra 'a', a[0] diventa 2 e così via.
Finita la prima iterazione.
Seconda iterazione, letter si imposta su 'b'... e così via. Questa è l'idea.
Quindi se hai una parola lunga 100 caratteri e la percorri 26 volte in totale iteri per 2600 volte. Non mi sembra ottimale, e assolutamente non lo è.
La tabella hash è un array che utilizza chiavi diverse da quelle intere. Di solito esistono strutture come HashMap in Java, Dictionary in C# e std::map in C++.
Quello che a te interessa è associare ad ogni carattere dell’alfabeto da 'a' a 'z' una chiave intera. Il miglior modo è utilizzare un array di dimensione 26 e la chiave è data da <carattere> - 'a' (ossia per <carattere> = 'a' dà 0, ad esempio, per 'c' dà 2 ecc…).
In questo modo puoi scorrere la parola una sola volta (nel caso precedente quindi solo 100 iterazioni) e incrementare il valore corrispondente alla lettera come chiave nell’array.
“Tabella hash” è solo un modo sofisticato (e corretto) di descrivere la cosa. Non ti devi far spaventare dalle strutture dati.