OCaml (option informatique) · Chapitre 8 · Exercice de TD
Compter les occurrences
Piles, files et tables de hachage · niveau 2
Énoncé
Écrire occurrences l qui, d'une string list, renvoie une table associant à chaque mot son nombre d'apparitions.
Corrigé
let occurrences l =
let t = Hashtbl.create 16 in
let rec parcours l =
match l with
| [] -> ()
| mot :: reste ->
(match Hashtbl.find_opt t mot with
| None -> Hashtbl.add t mot 1
| Some n -> Hashtbl.remove t mot; Hashtbl.add t mot (n + 1));
parcours reste
in
parcours l;
t
Pour chaque mot, on consulte sa valeur : absent, on l'ajoute avec 1 ; présent avec n, on le retire puis rajoute avec n + 1 (pas de remplacement au programme). On maintient ainsi une liaison unique par clé.
Exercices semblables
- Parenthésage équilibré corrigé
- Renverser avec une pile corrigé
- Premier doublon corrigé
- Mémoïsation de Fibonacci corrigé
- Évaluer une expression postfixe corrigé