Non riesco a pensare un algoritmo[C]

fk16
Rgazzi, come da titolo, non riesco a pensare un algoritmo per la risoluzione di questo esercizio:
Scrivere il codice di una funzione C che restituisce il valore del carattere più frequentemente usato all'interno di una stringa.
Avevo pensato inizialmente di passare la stringa interessata e un vettore. Facendo un ciclo poi avrei cominciato a scorrere la stringa,e ad igni carattere che incontrava incrementava l'emento corrispondente del vettore di 1. Capite bene che il codice ASCII ha circa 255 caratteri, quindi sarebbe dispersivo farlo in questo modo, qualcuno ha in mente qualche altro algoritmo per risolverlo???? Grazie per eventuali risposte.

Risposte
apatriarca
Dal punto di vista della complessità asintotica, e probabilmente anche da quello del tuo professore, la soluzione che avevi in mente è quella corretta. 255 non è infatti molto e supponendo che la stringa sia invece molto lunga, il costo di scorrere questo array influirebbe molto poco sulle performance successive. Inoltre, anche pensando di usare degli interi a 64 bit per gli elementi dell'array (uno spreco nel tuo caso), utilizzeresti appena 2KB di memoria (e se la stringa è corta potrebbe essere sufficiente usare degli unsigned char o short avendo un utilizzo della memoria di meno di un KB). Anche nel caso in cui la stringa sia corta, il costo non sarebbe comunque molto alto. Si potrebbe forse pensare ad una struttura dati diversa, ma credo che l'array sia in pratica abbastanza ottimale. In effetti, non mi vengono in mente strutture dati migliori (anche se forse si potrebbe sfruttare il fatto che ci sono alcuni codici ASCII che si presentano molto raramente).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.